外推法程序matlab,急求用MATLAB用龙格库塔和外推法解一阶微分方程

共回答了21个问题采纳率:81%

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

dx=0.05; %x方向步长

xleft=0; %区域的左边界

xright=10; %区域的右边界

xx=xleft:dx:xright; %一系列离散的点

n=length(xx); %点的个数

y0=1;

%%(1)欧拉法

Euler=y0;

for i=2:n

Euler(i)=Euler(i-1)+dx*f(xx(i-1),Euler(i-1));

end

%%(2)龙格库塔法

RK=y0;

for i=2:n

k1=f(xx(i-1),RK(i-1));

k2=f(xx(i-1)+dx/2,RK(i-1)+k1*dx/2);

k3=f(xx(i-1)+dx/2,RK(i-1)+k2*dx/2);

k4=f(xx(i-1)+dx,RK(i-1)+k3*dx);

RK(i)=RK(i-1)+dx*(k1+2*k2+2*k3+k4)/6;

end

%%Euler和Rk法结果比较

plot(xx,Euler,xx,RK)

hold on

%精确解用作图

syms x

rightsolve=dsolve('Dy=-y+x+1','y(0)=1','x');%求出解析解

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

plot(xx,rightdata,'r*')

legend('Euler','Runge-Kutta','analytic')

1年前

5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值