微分方程(1)—微分方程的数值解法

微分方程(1)—微分方程的数值解法常微分方程常微分方程是由函数在某点导数值和一个与x,y相关函数组成的方程y′=f(x,y)式子y′=x2+y2就是一种典型的常微分方程,并且这个方程很难用分离变量的方法解出。matlab程序表达为functionf=f_xy(x,y)f=x^2-y^2;end1.欧拉法利用欧拉法解微分方程的

大家好,欢迎来到IT知识分享网。

常微分方程

常微分方程是由函数在某点导数值和一个与x,y相关函数组成的方程

y=f(x,y)

式子 y=x2+y2 就是一种典型的常微分方程,并且这个方程很难用分离变量的方法解出。matlab程序表达为

function f=f_xy(x,y)
f=x^2-y^2;
end

1.欧拉法

利用欧拉法解微分方程的思路是利用线性定理对下一步的函数值进行估计,欧拉给出的公式为

y=f(x,y)
yn+1=yn+hy
xn+1=xn+h

欧拉法的误差为一阶,故称为一阶方法
其代码为

x0=0;
y0=1;
x=[x0];
y=[y0];
a=.01;
for h=0:a:1
    y0=y0+a*f_xy(x0,y0);
    x0=x0+a;
    x=[x x0];
    y=[y y0];
end
plot(x,y,'r+')

由欧拉法所解得的图像为
这里写图片描述

二阶龙哥库塔法

龙哥库塔法的出现时为了减小欧拉法带来的误差,其思想在于利用估计斜率的组合来获得真实斜率值得估计。

Bn=(An+An)2
An=f(xn+1,yˆn+1)
yˆn+1=xn+yh
An=y

Bn 为对下一步斜率的最佳估计。即 yn+1=xn+Bnh

x0=0;
y0=1;
x=[x0];
y=[y0];
a=.01;
for h=0:a:1
    y1=y0;
    x1=x0+a;
    y1=y0+a*f_xy(x0,y0);
    Hypf_xy=f_xy(x1,y1);
    y0=y0+a*(f_xy(x0,y0)+Hypf_xy)/2;
    x0=x0+a;
    x=[x x0];
    y=[y y0];
end
plot(x,y,'g+')
hold on

结果如图
这里写图片描述

绿色的线是二阶龙哥库塔法的结果,显然要比红线更加贴近真实情况(对于凹曲线而言,微分方程数值解会小于真实值)

版权声明:本文为博主原创文章,未经博主允许不得转载。

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/33236.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信