发 帖  
原厂入驻New

matlab应用之常微分方程

2011-11-3 15:36:59  1299 matlab
分享
理解常微分方程单步法与多步法思想,掌握常用算法的设计,掌握用matlab实现的数值解法。

利用MATLAB中数值解法“”求解,并用图形表示各种方法的精度。

利用常微分解法可知方程的解为:
for i=2:21   Y(i)=Y(i-1)+h/2*(fun(X(i-1),Y(i-1))+fun(X(i),Y(i-1))+h*fun(X(i-1),Y(i-1)));
Y
Y =
    1.0000    0.9989    0.9957    0.9909    0.9848    0.9778    0.9701    0.9618    0.9530
    0.9440    0.9348    0.9254    0.9160    0.9065    0.8971    0.8876    0.8783    0.8690
真实解的求法为:
x=1:0.05:2;
y=1./x.*(log(x)+1)
y =
    1.0000    0.9988    0.9957    0.9911    0.9853    0.9785    0.9710    0.9630
    0.9546    0.9459    0.9370 0.9279    0.9188    0.9096    0.9004    0.8912
    0.8821    0.8731    0.8641    0.8553    0.8466
    k2=fun(x(n-1)+h/2,Y(n-1)+h/2*k1);
    k3=fun(x(n-1)+h/2,Y(n-1)+h/2*k2);
    k4=fun(x(n-1)+h,Y(n-1)+h*k3);
    Y(n)=Y(n-1)+h/6*(k1+2*k2+2*k3+k4)
Y =
    1.0000    0.9957    0.9853    0.9710    0.9546    0.9370    0.9188    0.9004    0.8821
x=1:0.1:2;
y=1./x.*(log(x)+1)
y =
    1.0000    0.9957    0.9853    0.9710    0.9546    0.9370    0.9188    0.9004    0.8821
[x1,y1] = ode45(@(x,y)x^(-2)-y/x,[1,2],y0);
dsolve('Dy=x^(-2)-y/x','y(1) = 1','x')
ans =
(log(x)+1)/x
[x1,y1] = ode45(@(x,y)x^(-2)-y/x,[1,2],1);
fplot('(log(x)+1)/x',[1,2]);hold on, plot(x1,y1,'ro');

0
2011-11-3 15:36:59   评论 分享淘帖
高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发表新帖
关闭

站长推荐 上一条 /8 下一条

快速回复 返回顶部 返回列表