MATLAB题,用到欧拉公式求微分方程的数值解 80

用向前欧拉公式和改进欧拉公式求微分方程y'=x-2y,y(0)=2,0<=x<=1的数值解。... 用向前欧拉公式和改进欧拉公式求微分方程y'=x-2y,y(0)=2,0<=x<=1的数值解。 展开
 我来答
jimtien
推荐于2018-04-19 · TA获得超过7654个赞
知道大有可为答主
回答量:2146
采纳率:88%
帮助的人:1118万
展开全部

%欧拉法解一阶常微分方程

%例子dy/h=-y+x+1

%f=inline('-y+x+1','x','y');   %微分方程的右边项


f = inline('x-2*y','x','y');

y0 = 2;         %初始条件

h = 0.025;      %步长

xleft = 0;      %区域的左边界

xright = 1;     %区域的右边界

x = xleft:h:xright;

n = length(x);    


%前向欧拉法

y = y0;

for i=2:n

    y(i)=y(i-1)+h*f(x(i-1),y(i-1));  

end

plot(x,y,'ro');

hold on;


%改进欧拉法

y = y0;

for i=2:n

    y(i)=y(i-1)+h/2*( f(x(i-1),y(i-1))+f(x(i),y(i-1))+h*(f(x(i-1),x(i-1))));  

end

plot(x,y,'g+');


%精确解用作图

xx = x;

f = dsolve('Dy=x-2*y','y(0)=2','x');%求出解析解

y = subs(f,xx); %将xx代入解析解,得到解析解对应的数值


plot(xx,y);

legend('前向欧拉法','改进欧拉法','解析解');


推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式