ZKX's LAB

欧拉法龙格库塔法的比较 数值分析计算方法求解

2020-07-21知识7

欧拉法,改进欧拉法的一阶微分方程组迭代格式.. 随便找本数值分析或者计算方法的书上都有matlab 里面 powergui选项中simulation type中三个选项什么区别 phashor continuous discrete 尤其是continuous,计算机就是计算机,根本不可能是连续的,怎么会有。MATLAB中已知系统微分方程及初始值用欧拉法和龙格库塔法解一阶微分方程 function Euler欧拉法和龙格库塔算法解一阶常微分方程源代码例子dy/dx=-y+x+1f=inline('-y+x+1','x','y');微分方程的右边项dx=0.5;x方向步长xleft=0;区域的左边界xright=10;区域的右边界xx=xleft:dx:xright;一系列离散的点n=length(xx);点的个数y0=1;(1)欧拉法Euler=y0;for i=2:nEuler(i)=Euler(i-1)+dx*f(xx(i-1),Euler(i-1));end(2)龙格库塔法RK=y0;for i=2:nk1=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;endEuler和Rk法结果比较plot(xx,Euler,xx,RK)hold on精确解用作图syms xrightsolve=dsolve('Dy=-y+x+1','y(0)=1','x');求出解析解rightdata=subs(rightsolve,xx);将xx代入解析解,得到解析解对应的数值plot(xx,rightdata,'r*')legend('Euler','Runge-Kutta','analytic')变步长龙格库塔法与阿当姆茨预报校正法 数字积分程序应考虑程序的精度和积分的速度。欧拉法 预报—校正法 四阶梯龙格—库塔法在同一步长下的精度依次升高,但是由于计算量的增加,程序运行速度变慢。第二是步长的选择,在同一方法下步长越小,精度越高,但计算量越大,程序运行越慢。所以应根据积分要求的具体情况选择适当的积分方法和步长。

#欧拉法#微分方程

随机阅读

qrcode
访问手机版