用matlab 解这个简单微分方程的数值解,急

用matlab 解这个简单微分方程的数值解,急,第1张

先定义个函数

function

f=fffff(t,y)

f=[y(2);cos(y(1))];

然后

[t,y]=ode45(@fffff,[0,2],[0,0]);

plot(t,y(:,1),'r',t,y(:,2),'b')

即可。我给你设了初值0,0,你可以自己定义。红线为y,蓝线为y'

你先把上面的函数fffff写成m文件,保存到你的matlab工作目录里,然后再在命令窗口输入:

[t,y]=ode45(@fffff,[0,2],[0,0]);

plot(t,y(:,1),'r',t,y(:,2),'b')

我作过,能做出图像的。

如何用matlab求解微分方程并画图,可以先用dsolve()或ode()求出其微分方程(组)的解析解或数值解,然后用plot()绘制其图形。

例如:解微分方程 y'=y-2t/y,y(0)=1,0<t<4

1、用dsolve()求解,代码及结果如下

2、用ode45()求解,代码及结果如下

3、当然喽,使用dsolve()或ode()求解要根据题意去分析,来决定用那个函数。一般来说,用ode45求解微分方程()的数值解用点比较多。

在Matlab下输入:edit zhidao_feiyingm,然后将下面两行百分号之间的内容,复制进去,保存

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function y=zhidao_feiying(t,x)

a=1;

b=2;

c=3;

d=4;

%%比方说

%f=ax+y-z;

%g=bsin(xy)-ccos(z);

%h=dy-ax;

%%注意x用x(1)代,y用x(2)代,z用x(3)代

f=ax(1)+x(2)-x(3);

g=bsin(x(1)x(2))-ccos(x(3));

h=dx(2)-ax(1);

y=[f;g;h];

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

在Matlab下面输入:

t_end=5;

x0=[1;1;1];

[t,x]=ode45('zhidao_feiying',[0,t_end],x0);

plot(t,x)

legend('x','y','z')

上面只是固定d的情况,

你如果想做出随d的变化,估计比较麻烦一些,一方面ode45并不是等不长的。

另一方面,参数不好弄。

方程或者初始条件有问题,请认真核实。

原因:如果按照现在的初始条件,则第一个微分方程各项为0,方程不起作用。而且就算法而言,二阶(最高阶)导数的系数为0,会导致数值积分算法无法启动。

参考代码大致如下:

m=1;

g=98;

k=100;

l0=11;

x0=[01 0 0 0];

% 定义x1=l, x2=l', x3=a, x4=a'

dx=#(t,x)[x(2); (mx(1)x(4)^2-mgcos(x(3))-k(x(1)-l0))/m; 

    x(4); (-2mx(1)x(2)x(4)+mgx(1)sin(x(3)))/(mx(1)^2)];

[t,x]=ode15s(dx,[0 10],x0);

lstr = { '\itl', '{\itl}''', '\alpha', '\alpha''' };

for i=1:length(lstr)

    subplot(2,2,i)

    plot(t, x(:,i));

    xlabel('Time')

    ylabel( lstr{i} )

end

注意:其中的#应为电子邮件的AT符,在MATLAB中表示匿名函数。因出现这个字符就会被识别为邮件地址,很可能回答无法正常显示(恶心的度娘,鄙视),所以,慎重起见,这里以#代替。

以上就是关于用matlab 解这个简单微分方程的数值解,急全部的内容,包括:用matlab 解这个简单微分方程的数值解,急、如何用matlab求解微分方程并画图、如何用matlab求解微分方程组的数值解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10101371.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存