首页 理论教育 谱方法实现高效Matlab微分方程求解

谱方法实现高效Matlab微分方程求解

时间:2023-10-31 理论教育 版权反馈
【摘要】:,un逐步递推的过程中,每一步产生的误差都会积累在一起。整体截断误差由此前每一步的误差以及误差之间的传递关系决定,分析它是极为复杂的。所以为了简化问题,只考虑局部的情况。那么假设u=un,由xn开始计算一步的误差为u-un+1,此即为局部截断误差。若某种数值计算方法的局部截断误差为O,则称该方法的精度为p阶。

谱方法实现高效Matlab微分方程求解

在利用某种数值计算方法由u1,u2,…,un逐步递推的过程中,每一步产生的误差都会积累在一起。在xn处的误差为u(xn)-un,称为整体截断误差。整体截断误差由此前每一步的误差以及误差之间的传递关系决定,分析它是极为复杂的。所以为了简化问题,只考虑局部的情况。那么假设u(xn)=un,由xn开始计算一步的误差为u(xn+1)-un+1,此即为局部截断误差。若某种数值计算方法的局部截断误差为O(hp+1),则称该方法的精度为p阶。

下面分析欧拉法、后退的欧拉法、二步欧拉法的精度。

(1)对于欧拉法:

un+1=un+hf(xn,un) (1-9)

假设un=u(xn),并利用u′(x)=f(x,u):

un+1=u(xn)+hu′(xn) (1-10)

用泰勒公式将u(xn+1)在xn处展开:

u(xn+1)=u(xn)+hu′(xn)+O(h2) (1-11)

上两式相减:

u(xn+1)-un+1=O(h2) (1-12)

所以,欧拉法的精度为1阶。

(2)对于隐式欧拉法:

un+1=un+hf(xn+1,un+1) (1-13)

假设等号右边有un=u(xn)、un+1=u(xn+1),并利用u′(x)=f(x,u):

un+1=u(xn)+hu′(xn+1) (1-14)

将上式中的u′(xn+1)在xn处做泰勒展开:(www.xing528.com)

un+1=u(xn)+h[u′(xn)+O(h)]=u(xn)+hu′(xn)+O(h2) (1-15)

u(xn+1)在xn处泰勒展开:

u(xn+1)=u(xn)+hu′(xn)+O(h2) (1-16)

前两式相减:

u(xn+1)-un+1=O(h2) (1-17)

则:隐式欧拉法的精度为1阶。

(3)对于二步欧拉法:

un+1=un-1+2hf(xn,un) (1-18)

假设有un=u(xn)、un-1=u(xn-1),并利用u′(x)=f(x,u):

un+1=u(xn-1)+2hu′(xn) (1-19)

将上式中的u(xn-1)在xn处泰勒展开:

u(xn+1)在xn处泰勒展开:

前两式相减:

u(xn+1)-un+1=O(h3) (1-22)

那么,二步欧拉法的精度为2阶。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈