【急求用MATLAB用龙格库塔和外推法解一阶微分方程用4阶龙-查字典问答网
分类选择

来自曹瀚的问题

  【急求用MATLAB用龙格库塔和外推法解一阶微分方程用4阶龙格库塔和外推法(欧拉法)解一阶微分方程dy|dx=-y+x+1初值y(0)=1】

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

  用4阶龙格库塔和外推法(欧拉法)解一阶微分方程dy|dx=-y+x+1初值y(0)=1

1回答
2020-12-28 04:04
我要回答
请先登录
胡卫明

  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;

  fori=2:n

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

  end

  %%(2)龙格库塔法

  RK=y0;

  fori=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)

  holdon

  %精确解用作图

  symsx

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

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

  plot(xx,rightdata,'r*')

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

2020-12-28 04:09:10

最新问答

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •