数值求解思想:
(变量离散化
引入自变量点列niNn,在X<x;<x2...上求v(x.)的近似值, Xn通常取等步长h,即Xn=x+nXh,或x,=x-+ h, (n=1,2,...).
在小区间Lxn,x+l]上用差商代替微商(近似)V(xt)-y(x)h
向前欧拉公式:’=f(x, y) )y(xn+)~y(x,)+ h /xn,y(x,)) (送代式)Jnt1~Yn + h/(xn,) (近似式)特点: /(x,y)取值于区间[x,xt1]的左端点
特点:
(x,y)取值于区间[x, xt]的右端点非线性方程,称“隐式公式’
例 1
y'=-y+x+1,1(0)=1,h =0.1其中f(x,y)=-y+x+1
观察向前欧拉、向后欧拉算法计算情况。与精确解进行比较。误差有多大?
解: 1) 解析解: y=x+e
代码
x1(1)=0;y1(1)=1;y2 (1)=1;h=0.1for k=1:10
x1(k+1)=x1(k)+h ;
y1 (k+1)=(1-h)*y1(k) +h*x1 (k) +h ;y2 (k+1)=(y2 (k) +h*x1 (k+1) +h) / (1+h) :
end
x1,Y1,Y2,号 (y1-向前欧拉解,y2--向后欧拉解)x=0:0.1:1;
y=x+exp(-x)号(解析解plot(x,y,x1,y1,'k:',x1,y2,'r--
计算结果
我的总结与思考
有什么方法可以使精度提高 ?
梯形公式
[f(xn,Nn)+f(xn+,Nnu)]Yn+1=Yn+
n = 0,1,2,...
y.+ hf(x.Nn)
改进欧拉公式
思考计算结果
改进欧拉公式
总结
- 微分方程:含参数、未知函数、未知函数的导数(或者微分)的方程
- 数值求解:用若干离散点计算 近似值 来代替准确值
分类:单步法、多步法;隐式法、显示法 - 欧拉法 (欧拉折线法),也是一阶龙格-库塔法:以矩阵面积代替曲面梯形面积
- 改进欧拉法 (预估——校正法),也是二阶龙格-库塔法:以梯形面积代替曲面梯形面积
- 龙格-库塔法(重点):+1 的值用在某些点上函数值的线性组合成来计算,计算的次数是龙格库塔的阶。从几何意义看:用多个斜率加平均计算叠加,从而逼近准确值
一般常用 四阶龙格-库塔法。
阶数越高、步长越小,则计算精度越高,但是计算量越大 - 补充:对于2阶微分方程,则需要拆分成2个一阶微分方程,此时的 f(x,y) 变成了 f(x,y,y') 需要分别用R-K法计算 y 和 y'
- 局部截断误差:准确值-近似值
- 局部误差的阶(也是龙格-库塔法的阶)
- 亚当姆斯法(重点):是线性多步法,利用已求出的多个值进行计算
- 拉格朗日插值:构造函数多项式 来近似代替
- 亚当姆斯法用拉格朗日插值的函数多项式近似替代
- 亚当姆斯公式有:显式公式、隐式公式
- 用高阶的亚当姆斯法(一般四阶)计算,得到的计算结果一般更精确,且计算量比龙格-库塔法少,唯一缺点是最前面几个值需要用其他方法求出