怎么用Matlab解显含时间的微分方程啊?
怎么用Matlab解显含时间的微分方程啊?有专门的命令? 用数值方法吧,ode文件。符号运算方面以前没用来解过显含时间的微分方程,不太清楚,不过可以试一下,dsolve函数。 一般微分方程想要的到解析解的话都比较困难
如果用ode系列求数值解的话,显含不显含时间的方法都是一致的 谢谢上面两位,问题是怎么处理这个时间啊,函数文件里有t,主程序里的ODE命令里也有时间,系统报错的 最简单的一个例子,求微分方程x'=cos(t)
写一个函数vdp1000.m
function dy = vdp1000(t,y)
dy = cos(t);
主程序:
x0=0;%初始值
tspan=; %求解区间
= ode15s(@vdp1000,tspan,x0);
plot(T,Y) 我是一个微分方程组,含有参数,当然参数我定义为了全局变量,但t就不行了,不说明这个变量的话它就报错,说是没定义变量,定义的话也只能是个区间,它也报错All rows in the bracketed expression must have the same number of columns.,不知道怎么弄 把你的方程提出来,这样说不清楚
[ 本帖最后由 ChaChing 于 2010-6-14 00:57 编辑 ] 函数文件
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 编辑 ] 贴图给方程吧,程序太乱看不懂
这个问题可以用 = 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 编辑 ] 谢谢HAPPY教授的回答,不过我也查到了一些问题,好像用ODE也是可以的 我上面给出的solver就指代的是ode45 ode23s等等
[ 本帖最后由 ChaChing 于 2010-6-14 00:57 编辑 ] 顺便问个问题吧,在matlab里,正余弦是表示成sin,cos之类吧,为什么我看到后面还加个h,写成cosh什么的?matlab实在学的不怎么样,多多指教吧 加 h 表示双曲余弦、双曲正弦函数,和cos sin之类是不一样的
[ 本帖最后由 ChaChing 于 2010-6-14 00:32 编辑 ]
页:
[1]