yangxh 发表于 2006-8-30 12:59

怎么用Matlab解显含时间的微分方程啊?

怎么用Matlab解显含时间的微分方程啊?有专门的命令?

buaalqq 发表于 2006-8-30 13:54

用数值方法吧,ode文件。
符号运算方面以前没用来解过显含时间的微分方程,不太清楚,不过可以试一下,dsolve函数。

happy 发表于 2006-8-30 15:13

一般微分方程想要的到解析解的话都比较困难

如果用ode系列求数值解的话,显含不显含时间的方法都是一致的

yangxh 发表于 2006-8-30 16:07

谢谢上面两位,问题是怎么处理这个时间啊,函数文件里有t,主程序里的ODE命令里也有时间,系统报错的

happy 发表于 2006-8-30 16:34

最简单的一个例子,求微分方程x'=cos(t)

写一个函数vdp1000.m

function dy = vdp1000(t,y)
dy = cos(t);

主程序:

x0=0;%初始值
tspan=; %求解区间
= ode15s(@vdp1000,tspan,x0);
plot(T,Y)

yangxh 发表于 2006-8-30 17:15

我是一个微分方程组,含有参数,当然参数我定义为了全局变量,但t就不行了,不说明这个变量的话它就报错,说是没定义变量,定义的话也只能是个区间,它也报错All rows in the bracketed expression must have the same number of columns.,不知道怎么弄

happy 发表于 2006-8-30 17:19

把你的方程提出来,这样说不清楚

[ 本帖最后由 ChaChing 于 2010-6-14 00:57 编辑 ]

yangxh 发表于 2006-8-30 17:27

函数文件
global u;global L;
lf=1.2;lr=1.3; m=1500; iz=3000;
bf=11.275; br=18.631; cf=1.56; cr=1.56;
df=-2574.7; dr=-1749.7; ef=-1.999; er=-1.7908;
kp=0.3; K=0.02; Tr=0.2; Q=0.05;
wd=2*pi; t= deltd=Q*cos(wd*t);
alphaf=atan((y(1)+lf*y(2))/u)-y(5);
alphar=atan((y(1)-lr*y(2))/u)-kp*y(5);
Ff=df*sin(cf*atan(bf*(1-ef)*alphaf+ef*atan(bf*alphaf)));
Fr=dr*sin(cr*atan(br*(1-er)*alphar+er*atan(br*alphar)));
dy=[2*(Ff*cos(y(5)+deltd)+Fr*cos(kp*(y(5)+deltd)))/m-u*y(2);
   2*(lf*Ff*cos(y(5)+deltd)-lr*Fr*cos(kp*(y(5)+deltd)))/iz;
   y(1)*cos(y(4))+u*sin(y(4));
   y(2);
   -(K*y(3)+K*L*y(1)*cos(y(4))/u+K*L*sin(y(4))+y(5))/Tr];

主程序最简单画相图就可以

[ 本帖最后由 ChaChing 于 2009-8-8 20:35 编辑 ]

happy 发表于 2006-8-30 19:17

贴图给方程吧,程序太乱看不懂
这个问题可以用 = solver(odefun,tspan,y0,options,p1,p2...) 这种格式显示

global 定义的全局变量u和L可以通过格式中的p1,p2传递

函数可以写成 function dy = vdp1000(t,y,u,L) 的形式

[ 本帖最后由 ChaChing 于 2009-8-8 20:31 编辑 ]

yangxh 发表于 2006-8-30 20:55

谢谢HAPPY教授的回答,不过我也查到了一些问题,好像用ODE也是可以的

happy 发表于 2006-8-30 20:58

我上面给出的solver就指代的是ode45 ode23s等等

[ 本帖最后由 ChaChing 于 2010-6-14 00:57 编辑 ]

yangxh 发表于 2006-8-30 21:19

顺便问个问题吧,在matlab里,正余弦是表示成sin,cos之类吧,为什么我看到后面还加个h,写成cosh什么的?matlab实在学的不怎么样,多多指教吧

MVH 发表于 2006-8-30 21:29

加 h 表示双曲余弦、双曲正弦函数,和cos sin之类是不一样的

[ 本帖最后由 ChaChing 于 2010-6-14 00:32 编辑 ]
页: [1]
查看完整版本: 怎么用Matlab解显含时间的微分方程啊?