matlab画图问题(关于微分方程)function ydoc=myfun (t,y)k1=1;k2=1;k3=0.5;k4=1.5;k5=5;l1=0.01;l2=0.6;l3=0.2;a1=0.75;a2=0.75;vd=-k1*tanh(l1*y(2));wd=-k2*tanh(l2*y(3))+k3*tanh(l3*y(1))*sin(t);ydoc=[(y(5)+wd)*y(2);-(y(5)+wd)*y(1)+y(4)+vd;y(5)+
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/30 00:54:11
matlab画图问题(关于微分方程)function ydoc=myfun (t,y)k1=1;k2=1;k3=0.5;k4=1.5;k5=5;l1=0.01;l2=0.6;l3=0.2;a1=0.75;a2=0.75;vd=-k1*tanh(l1*y(2));wd=-k2*tanh(l2*y(3))+k3*tanh(l3*y(1))*sin(t);ydoc=[(y(5)+wd)*y(2);-(y(5)+wd)*y(1)+y(4)+vd;y(5)+
matlab画图问题(关于微分方程)
function ydoc=myfun (t,y)
k1=1;k2=1;k3=0.5;k4=1.5;k5=5;
l1=0.01;l2=0.6;l3=0.2;
a1=0.75;a2=0.75;
vd=-k1*tanh(l1*y(2));
wd=-k2*tanh(l2*y(3))+k3*tanh(l3*y(1))*sin(t);
ydoc=[(y(5)+wd)*y(2);
-(y(5)+wd)*y(1)+y(4)+vd;
y(5)+wd;
-k4*sign(y(4))*(abs(y(4)))^a1;
-k5*sign(y(5))*(abs(y(5)))^a2];
我要画出(vd导数,wd导数)如何画?
我想过利用方程解出vd,wd的导数,可是太复杂了,还老出错!
有没有好的办法,利用直接的命令?
matlab画图问题(关于微分方程)function ydoc=myfun (t,y)k1=1;k2=1;k3=0.5;k4=1.5;k5=5;l1=0.01;l2=0.6;l3=0.2;a1=0.75;a2=0.75;vd=-k1*tanh(l1*y(2));wd=-k2*tanh(l2*y(3))+k3*tanh(l3*y(1))*sin(t);ydoc=[(y(5)+wd)*y(2);-(y(5)+wd)*y(1)+y(4)+vd;y(5)+
你没给出初值,我们没法解,你参考微分方程数值解法ode45函数的用法
我假定了一个初值y0=[1 1 1 1 1].';
ts=[0,20];
[t,y]=ode45(@myfun,ts,y0);
vd=-k1*tanh(l1*y(:,2));
wd=-k2*tanh(l2*y(:,3))+k3*tanh(l3*y(:,1))*sin(t);
% 到这里vd 和 wd 的数值解都有了
% 你的问题是想画(vd关于t的导数,wd关于t的导数)吗? 若是的话,
plot(diff(vd)./diff(t),diff(wd)./diff(t))
导数一般用差分代替,函数是diff,但这时候差分以后少了一个数,画图的时候自变量也要少用一个数。