微分方程数值解法李荣华答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微分方程数值解法李荣华答案

【篇一:高阶常微分方程的数值求解】

t>谷照升

(长春工程学院理学院,长春,130012)

摘要对经典初始条件的高阶常微分方程,给出其数值求解方法。该方法比runge-kutta法具有更好的适应性、易用性、计算速度和可控制的更高精度。

关键词常微分方程;数值解;算法

中图分类号: o241.81文献标识码: a 1

1 引言

求解复杂的1阶常微分方程,通常只能采用数值解法。数值解法一般又以runge-kutta法为主。对高阶常微分方程,则通常是将其转化为1阶常微分方程组,再用runge-kutta法求解[1, 2]。但这种通用性方法,在精度、软件计算的适应度方面,常常不够理想,甚至得不到结果。针对不同的广普性方程类型,可以建立更具针对性的计算方法。例如,针对三类边值条件和特定形式的方程,已经有有相应的差分法和有限元法。每一种更具针对性的方法,都有其更高的精度和更为健壮的算法,当然也存在其必然的局限性。

本文对如下形式的2阶常微分方程

?d2ydy?a(x)?b(x)y?f(x)?2dxdx?? x∈[a, b]

(1) ?y(a)?ya?y?(a)?y?a???

给出了完整、方便、高效的单步法数值求解算法,并将其推广到任意高阶问题的求解。 2 算法

思路:将[a, b]分割为a=x0 x1…xn=b,步长?xi?xi?xi?1。从i=1开始,利用数值积分公式,通过[xi-1, xi]上的数值积分,先求

y??(xi),再求出y?(xi),最后求y(xi)。依次取i=2, 3, … ,n,得到各点y??(xi)、y?(xi)、y(xi)的近似值。

根据数值积分的算法不同,主要有两种不同的计算公式。

2.1、矩形数值积分算法

矩形算法形式简单,精度偏低。基于不同的积分形式,又可以得到3种不同的计算公式,其精1 基金项目:吉林省自然科学基金项目(201215115)

1

度无显著差别。此处仅给出与2.2梯形算法最为接近的一种。

利用y?(xi)?y?(xi?1)??xi

xi?1y??(x)dx?y??(xi)?xi

y(xi)?y(xi?1)??

在xi点得到 xixi?1y?(x)dx?y?(xi)?xi

y?(xi)?y??(xi)?xi?y?(xi?1) (2)

2y(xi)?y?(xi)?xi?y(xi?1)?y??(xi)?xi?y?(xi?1)?xi?y(xi?1)(3)

这里 i?1,2,...,n。

将(2) 、(3)代入(1), 在xi点得到

2y??(xi)?a(xi)[y??(xi)?xi?y?(xi?1)]?b(xi)[y??(xi)?xi?y?(xi?1)?xi ?y(xi?1)]?f(xi) ???xi?y(xi?1)] (4) 从而

y??(xi)?f(xi)?a(xi)y(xi?1)?b(xi)[y(xi?1)

1?a(xi)?xi?b(xi)?xi

算法:

step 1: i=1;

?代入 (4), 输出y??(x1); 将(1)中 y(x0)?ya、y?(x0)?ya

将y??(x1)代入 (2), 输出y?(x1);

取y(x1)?y?(x0)?x1?y(x0), 输出y(x1)。

step 2: while in

{

i= i+1;

将y(xi?1)、y?(xi?1)代入 (4), 输出y??(xi);

将y??(xi)代入 (2), 输出y?(xi);

取y(xi)?y?(xi?1)?xi?y(xi?1), 输出y(xi);

}

2.2、梯形数值积分算法

根据(1)式,首先算出

y??(x0)?f(x0)?a(x0)y?(x0)?b(x0)y(x0)(5)

2

对i?1,2,3,...,n, 取y?(xxi

i)?y?(xi?1)??xy??(x)dx?1[y??(xi)?y??(xi?1)]?xi,

i?12

y(xxi1

i)?y(xi?1)??xy?(x)dx?[y?(xi)?y?(x

?12i?1)]?xi,

i

则xi点满足

y?(x1

i)?2[y??(xi)?y??(xi?1)]?xi?y?(xi?1) (6)

y(x1

i)?2[y?(xi)?y?(xi?1)]?xi?y(xi?1)

?1

2{1

2[y??(xi)?y??(xi?1)]?xi?y?(xi?1)?y?(xi?1)}?xi?y(xi?1) (7)

?1

4y??(x21

4??(x2

i)?xi?yi?1)?xi?y?(xi?1)?xi?y(xi?1),

将(6) 、(7)代入(1), 得到

y??(x?a(x1

i)i2[y??(xi)?y??(xi?1)]?xi?y?(xi?1)}

?b(x121

2

i)[4y??(xi)?xi?4y??(xi?1)?xi?y?(xi?1)?xi?y(xi?1)]?f(xi)

从而

f(xa(x1(x12

y??(xi)?i)[y??(xi?1)?xi?y?i?1)]?b(xi)[y??(xi?1)?xi?y?(xi?1)?xi? y(x

i)?24i?1)]

1?1

2a(x12

i)?xi?4b(xi)?xi

i?1,2,3,...,n

算法:

step 1:

按(5)式求出y??(x0)。

step 2:

i=0; while in

{

i= i+1;

将y(xi?1)、y?(xi?1)、y??(xi?1)代入 (8), 输出y??(xi);

3 (8)

将y??(xi?1)、y??(xi)代入 (6), 输出y?(xi);

将y(xi?1)、y?(xi?1)、y?(xi)代入 y(xi)?

} 1[y?(xi)?y?(xi?1)]?xi?y(xi?1), 输出y(xi); 2

3 误差分析

相关文档
最新文档