数值计算:微分方程求解
微分方程数值求解方法

y t1 y t0 f t0 , y t0 t1 t0
写成迭代格式
yn1 yn hf tn , yn
t0 t1
3. 龙格库塔法
龙格-库塔法(Runge-Kutta)是用于常微分方程求解的一类重要迭代方 法,由数学家卡尔·龙格和马丁·威尔海姆·库塔于1900年左右发明。对于 如下方程
3. 龙格库塔法
k1 f t n , yn h h k 2 f t n , yn k1 2 2 h h k3 f t n , y n k 2 2 2 k 4 f t n h, yn hk3 k k1 2k 2 2k3 k 4 6 yn 1 yn hk
u 1 u2
2 u u1 2 F cos t 2 nu2 n
每一种方法的区别 在于,如何从前一 个点得到下一点。
2. 欧拉法
以如下微分方程为例
yt f t , y t
y t0 y0
已知A0点坐标 t0 , y t0 ,过A0点的切线方程为
y y t0 yt0 t t0 f t0 , y t0 t t0
yt f t , yt
yt0 y0
龙格-库塔法的基本格式如下 1 yn1 yn h k1 2k2 2k3 k 4 6 k1 f t n , yn
yn1 yn hf tn , yn
h h k 2 f tn , yn k1 2 2 h h k3 f t n , y n k 2 2 2 k 4 f t n h, yn hk3
二阶微分方程数值求解

二阶微分方程数值求解
要数值求解二阶微分方程,首先需要将其转化为一个一阶微分方程组。
假设待求解的二阶微分方程为:
y''(x) = f(x, y(x), y'(x))
将其转化为一阶微分方程组:
z(x) = y'(x)
z'(x) = f(x, y(x), z(x))
然后,可以选择数值求解方法,如欧拉方法、改进的欧拉方法、四阶龙格-库塔方法等等,对这个一阶微分方程组进行数值求解。
以欧拉方法为例,假设已知初始条件 y(x0) = y0,z(x0) = z0,
选择步长 h。
则可以按照以下步骤进行数值求解:
1. 初始化步数 n = 0,设置初始条件 y(x0) = y0,z(x0) = z0。
2. 计算下一步的值:y(x + h) = y(x) + h * z(x),z(x + h) = z(x) +
h * f(x, y(x), z(x))。
3. 将 x 增加 h,即 x = x + h。
4. 将步数 n 增加 1,即 n = n + 1。
5. 重复步骤 2-4,直到达到目标位置的 x 值(如终点 x 结束条
件 x >= x_end)。
需要注意的是,数值求解方法的精度和稳定性都会受到步长的影响,过大的步长可能导致数值不稳定,过小的步长可能导致
计算量过大。
因此,选择合适的步长是很重要的。
值得一提的是,当二阶微分方程为边值问题时,可以采用有限差分法、有限元法等数值方法进行数值求解。
这些方法会更为复杂,并涉及到边界条件的处理。
微分方程的数值解法

微分方程的数值解法微分方程是描述自然界中众多现象和规律的重要数学工具。
然而,许多微分方程是很难或者无法直接求解的,因此需要使用数值解法来近似求解。
本文将介绍几种常见的微分方程数值解法。
1. 欧拉方法欧拉方法是最简单的数值解法之一。
它将微分方程转化为差分方程,通过计算离散点上的导数来逼近原方程的解。
欧拉方法的基本思想是利用当前点的导数值来估计下一个点的函数值。
具体步骤如下:首先,将自变量区间等分为一系列的小区间。
然后,根据微分方程的初始条件,在起始点确定初始函数值。
接下来,根据导数的定义,计算每个小区间上函数值的斜率。
最后,根据初始函数值和斜率,递推计算得到每个小区间上的函数值。
2. 龙格-库塔方法龙格-库塔方法是一种常用的高阶精度数值解法。
它通过进行多次逼近和修正来提高近似解的准确性。
相比于欧拉方法,龙格-库塔方法在同样的步长下可以获得更精确的解。
具体步骤如下:首先,确定在每个小区间上的步长。
然后,根据微分方程的初始条件,在起始点确定初始函数值。
接下来,根据当前点的导数值,使用权重系数计算多个中间点的函数值。
最后,根据所有中间点的函数值,计算出当前点的函数值。
3. 改进欧拉方法(改进的欧拉-克罗默法)改进欧拉方法是一种中阶精度数值解法,介于欧拉方法和龙格-库塔方法之间。
它通过使用两公式递推来提高精度,并减少计算量。
改进欧拉方法相对于欧拉方法而言,增加了一个估计项,从而减小了局部截断误差。
具体步骤如下:首先,确定在每个小区间上的步长。
然后,根据微分方程的初始条件,在起始点确定初始函数值。
接下来,利用欧拉方法计算出中间点的函数值。
最后,利用中间点的函数值和斜率,计算出当前点的函数值。
总结:微分方程的数值解法为我们研究和解决实际问题提供了有力的工具。
本文介绍了欧拉方法、龙格-库塔方法和改进欧拉方法这几种常见的数值解法。
选择合适的数值解法取决于微分方程的性质以及对解的精确性要求。
在实际应用中,我们应该根据具体情况选择最合适的数值解法,并注意控制步长以尽可能减小误差。
随机微分方程的数值解

随机微分方程的数值解
随机微分方程是一种描述随机过程的数学模型,它可以用来研究随机过程的性质和行为。
随机微分方程的数值解是指使用数值计算方法求解随机微分方程的解的过程。
随机微分方程的数值解可以通过数值积分方法、数值微分方法、数值积分变分方法等多种方法进行求解。
其中,数值积分方法和数值微分方法是最常用的方法,它们可以通过数值计算方法求解随机微分方程的解。
具体来说,数值积分方法可以通过求解随机微分方程的积分方程来得到随机微分方程的数值解。
例如,对于一个二维随机微分方程du/dt=a(du/dx+dv/dy)+b(dx^2+dy^2)u,可以使用数值积分方法求解其解。
具体的数值积分方法可以是欧拉法、龙格-库塔法、辛普森法等。
数值微分方法可以通过求解随机微分方程的微分方程来得到随机微分方程的数值解。
例如,对于一个二维随机微分方程du/dt=a(du/dx+dv/dy)+b(dx^2+dy^2)u,可以使用数值微分方法求解其解。
具体的数值微分方法可以是中心差分法、前向差分法、后向差分法等。
总之,随机微分方程的数值解可以通过数值积分方法和数值微分方法
等多种方法进行求解,具体的求解方法需要根据具体的问题和应用场景来选择。
微分方程数值解使用数值方法求解微分方程

微分方程数值解使用数值方法求解微分方程微分方程是描述自然现象中变化的数学模型,它是数学和科学研究中的重要工具。
然而,许多微分方程并没有精确的解析解,因此需要使用数值方法来近似求解。
本文将介绍一些常用的数值方法来求解微分方程,包括欧拉方法、改进的欧拉方法和龙格-库塔方法。
一、欧拉方法欧拉方法是最简单、最基础的数值方法之一。
它基于微分方程解的定义,通过离散化自变量和因变量来逼近解析解。
假设我们要求解的微分方程为dy/dx = f(x, y),初始条件为y(x0) = y0。
将自变量x分割成若干个小区间,步长为h,得到x0, x1, x2, ..., xn。
根据微分方程的定义,我们可以得到递推公式 yn+1 = yn + h*f(xn, yn)。
用代码表示即为:```def euler_method(f, x0, y0, h, n):x = [x0]y = [y0]for i in range(n):xn = x[i]yn = y[i]fn = f(xn, yn)xn1 = xn + hyn1 = yn + h*fnx.append(xn1)y.append(yn1)return x, y```二、改进的欧拉方法欧拉方法存在着局部截断误差,即在每个小区间上的误差。
改进的欧拉方法是对欧拉方法的改进,可以减小截断误差。
它的递推公式为yn+1 = yn + h*(f(xn, yn) + f(xn+1, yn+1))/2。
用代码表示即为:```def improved_euler_method(f, x0, y0, h, n):x = [x0]y = [y0]for i in range(n):xn = x[i]yn = y[i]fn = f(xn, yn)xn1 = xn + hyn1 = yn + h*(fn + f(xn1, yn + h*fn))/2x.append(xn1)y.append(yn1)return x, y```三、龙格-库塔方法龙格-库塔方法是一种更加精确的数值方法,它通过计算多个递推式的加权平均值来逼近解析解。
数值计算中的微分方程数值求解方法

数值计算中的微分方程数值求解方法近年来,随着计算机技术的飞速发展,数值计算已成为解决实际问题的有效手段之一。
而微分方程在自然科学和工程技术中应用广泛,因此微分方程的数值求解方法备受关注。
本文将介绍数值计算中的微分方程数值求解方法。
一、常微分方程数值求解方法常微分方程(ODE)的求解是微分方程数值求解的主要内容之一。
常微分方程数值求解方法可以分为两大类,即直接法和间接法。
直接法是通过求解微分方程的逐步近似值来得到所需解的,其中最基本的直接法是欧拉法。
欧拉法通过逐步逼近微分方程的解,通过将微分方程的解变成几个离散的点,将问题转化为已知点之间的线性问题,最终求得近似解。
但是,在解决实际问题时,欧拉法的收敛速度太慢,求解误差大,难以应用。
间接法是通过将微分方程转化为一个非线性代数方程,然后通过迭代求解非线性代数方程的解得到微分方程的解。
其中最基本的间接法是牛顿迭代法。
牛顿迭代法通过不断地线性化微分方程以求得解的近似值,由复杂问题简化为简单问题,从而提高了解的精度和求解速度。
二、偏微分方程数值求解方法在实际问题中,有许多问题需要通过偏微分方程来描述,如电磁场问题、热传导问题和流体力学问题等。
因此,偏微分方程数值求解方法显得尤为重要。
对于偏微分方程,最常见的数值求解方法是有限差分法。
有限差分法将要求解的偏微分方程进行一个离散化处理,将偏微分方程转化为离散化的代数方程,并通过代数方程的求解得到原偏微分方程的近似解。
有限元法也是解决偏微分方程问题的一种常见方法。
有限元法通过引入分段多项式逼近,将物理量分割成小区域,并在每一个小区域内,通过选用合适的基函数,将要求解的问题描述为在小区域内基函数的线性组合,从而构建出离散化的方程组,并通过求解离散化的方程组得到微分方程的近似解。
总之,微分方程在工程、自然科学和经济金融等领域都有着广泛的应用。
数字计算中的微分方程数值求解方法对于解决这些问题至关重要。
本文简单介绍了常微分方程数值求解的直接法和间接法,以及偏微分方程数值求解的有限差分法和有限元法,但这些求解方法也只是微分方程数值求解的冰山一角,未来的数值计算方法必将随着技术的革新而不断改进和完善。
微分方程的数值解法与程序实现
微分方程的数值解法与程序实现微分方程是数学中的重要概念,广泛应用于各个领域。
解微分方程有多种方法,其中一种常用的方法是数值解法。
本文将介绍微分方程的数值解法以及如何用程序实现。
我们来了解一下微分方程的概念。
微分方程描述了变量之间的关系,其中包含了未知函数及其导数。
一般形式的微分方程可以写作:dy/dx = f(x, y)其中,y是未知函数,x是自变量,f(x, y)是已知函数。
解微分方程的目标是找到函数y(x)的表达式,使得方程左边的导数等于右边的已知函数。
对于一些简单的微分方程,可以通过代数方法求解得到解析解。
但是,对于复杂的微分方程,往往很难找到解析解。
这时候就需要使用数值解法来近似求解。
数值解法的基本思路是将微分方程转化为差分方程,然后通过逐步逼近的方法求解。
差分方程是离散的,可以使用计算机程序来实现。
常用的数值解法有欧拉法、改进的欧拉法、龙格-库塔法等。
以欧拉法为例,我们来看一下具体的实现过程。
欧拉法的基本思想是通过一阶导数来表示微分方程的变化率。
具体步骤如下:1. 将微分方程转化为差分方程:dy/dx ≈ (y(i+1) - y(i)) / Δx,其中Δx是步长。
2. 根据初始条件,设置初始值y(0)。
3. 通过迭代计算,求解差分方程:y(i+1) = y(i) + f(x(i), y(i)) * Δx,其中f(x(i), y(i))是在(x(i), y(i))处的导数值。
4. 重复步骤3,直到达到所需的精度或计算次数。
通过上述步骤,我们可以得到微分方程的数值解。
下面,我们来具体实现一个用于求解微分方程的程序。
假设我们要求解的微分方程为dy/dx = x^2,初始条件为y(0) = 1,步长Δx = 0.1。
程序的实现如下:```pythondef euler_method(x0, y0, dx, n):x = [x0]y = [y0]for i in range(n):x.append(x[i] + dx)y.append(y[i] + dx * x[i]**2)return x, yx0 = 0y0 = 1dx = 0.1n = 10x, y = euler_method(x0, y0, dx, n)for i in range(n+1):print("x = {:.1f}, y = {:.4f}".format(x[i], y[i]))```运行以上程序,将得到微分方程的数值解。
微分方程数值解法
微分方程数值解法微分方程是数学中的重要概念,它描述了物理系统中变量之间的关系。
解微分方程是许多科学领域中常见的问题,其中又可以分为解析解和数值解两种方法。
本文将重点介绍微分方程的数值解法,并详细讨论其中的常用方法和应用。
一、微分方程的数值解法概述微分方程的解析解往往较为复杂,难以直接求解。
在实际问题中,我们通常利用计算机进行数值计算,以获得方程的数值解。
数值解法的基本思想是将微分方程转化为一组离散的数值问题,通过逼近连续函数来获得数值解。
二、常见的数值解法1. 欧拉法欧拉法是最基础的数值解法之一,其核心思想是将微分方程转化为差分方程,通过逼近连续函数来获得数值解。
欧拉法的基本形式为:yn+1 = yn + h·f(xn, yn)其中,yn表示第n个时间步的数值解,h为时间步长,f为微分方程右端的函数。
欧拉法的精度较低,但计算简单,适用于初步估计或简单系统的求解。
2. 改进的欧拉法(Heun法)改进的欧拉法(Heun法)是对欧拉法的改进,其关键在于求解下一个时间步的近似值时,利用了两个斜率的平均值。
Heun法的基本形式为:yn+1 = yn + (h/2)·(k1 + k2)k1 = f(xn, yn),k2 = f(xn+h, yn+h·k1)Heun法较欧拉法的精度更高,但计算量较大。
3. 龙格-库塔法(RK方法)龙格-库塔法是一类常用的数值解法,包含了多个不同阶数的方法。
其中,最常用的是经典四阶龙格-库塔法(RK4法),其基本形式为:k1 = f(xn, yn)k2 = f(xn + h/2, yn + (h/2)·k1)k3 = f(xn + h/2, yn + (h/2)·k2)k4 = f(xn + h, yn + h·k3)yn+1 = yn + (h/6)·(k1 + 2k2 + 2k3 + k4)RK4法实现较为复杂,但精度较高,适用于解决大多数常微分方程问题。
求微分方程数值解
求微分方程数值解
微分方程数值解是一种数学方法,用于解决一些复杂的微分方程,特别是那些无法通过解析方法求解的微分方程。
通过数值解法,我们可以得到微分方程的近似解,并且可以在计算机上进行实现,以便更好地理解和分析问题。
我们需要将微分方程转化为差分方程,这样就可以利用数值方法进行求解。
差分方程是一种以离散形式表示微分方程的方法,通过近似替代微分表达式,将连续问题转化为离散问题,从而实现计算机求解。
常见的数值方法包括欧拉方法、龙格-库塔方法等,它们通过不断迭代求解差分方程,逼近微分方程的解。
在应用数值解法求解微分方程时,需要注意选择合适的步长和迭代次数,以确保数值解的准确性和稳定性。
步长过大会导致数值误差增大,步长过小则会增加计算量,影响计算效率。
因此,需要在准确性和效率之间寻找平衡点,选择合适的参数进行计算。
在使用数值解法时,还需要考虑边界条件和初值条件的设定。
这些条件对于微分方程的求解至关重要,不同的条件设定可能会导致不同的数值解,甚至无法得到有效的解。
因此,在进行数值计算之前,需要对问题进行充分的分析和理解,确定合适的条件,以确保数值解的准确性和可靠性。
总的来说,微分方程数值解是一种强大的工具,可以帮助我们解决
复杂的微分方程,探索未知的领域。
通过合理的数值方法和参数选择,我们可以得到准确的数值解,从而更好地理解和应用微分方程的理论。
希望通过不断的探索和实践,我们可以更深入地理解微分方程数值解的原理和方法,为科学研究和工程实践提供更多有益的帮助。
微分方程数值解差分法
微分方程数值解差分法微分方程是自然科学和工程技术中广泛使用的工具,它们描述了许多物理过程的动力学行为。
对于复杂的微分方程,解析解往往很难或者不可能得到。
此时我们需要数值解差分法来解决问题。
一、微分方程数值解的方法1.分裂法分裂法是将一个复杂的微分方程分解为多个简单的方程。
例如,将一个偏微分方程分解成几个常微分方程,从而可以方便地使用数值方法计算解。
2.有限差分法有限差分法是一种常见的微分方程数值计算方法。
它将一维或多维的连续函数离散为一系列离散点,然后使用差分方程近似微分方程,最后用迭代法计算数值解。
3.有限元法有限元法是一种广泛使用的数值计算方法,它可以用于求解各种类型的微分方程。
该方法将求解区域分割成多个小区域,然后对每个小区域进行离散化和近似处理。
二、数值解差分法数值解差分法是微分方程数值解的基本方法之一。
它是一种基于差分方程的离散化方法,可以对微分方程进行近似,并将微分方程转化为一个差分方程。
数值解的差分法可以分为前向差分、后向差分和中心差分三种方法。
1.前向差分法前向差分法使用前一时间步的值,计算当前时间步的值。
它的近似误差随着时间步长的增大而增大。
前向差分的公式如下:y_i+1 = y_i + hf_i(x_i,y_i)其中,h是时间步长,f_i是微分方程的左侧。
2.后向差分法后向差分法使用后一时间步的值,计算当前时间步的值。
它的近似误差随着时间步长的增大而减小。
后向差分的公式如下:y_i+1=y_i + hf_i(x_i+1,y_i+1)3.中心差分法中心差分法使用前一时间步和后一时间步的值,计算当前时间步的值。
它的近似误差随着时间步长的增大而增大。
中心差分的公式如下:y_i+1=y_i + 1/2hf_i(x_i,y_i) + 1/2hf_i(x_i+1,y_i+1)三、差分法的优缺点差分法作为微分方程数值解的一种基本方法,具有以下优缺点:1.优点(1)简单易实现:差分法的实现很简单,只需要计算微分方程的离散值和靠近值即可。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
含有 yn1时,方法是隐式的, 不含有 yn1时,方法是显式的。
定义 设 y( x )是初值问题的准确解,称 1) 作局部化假设,即设yn y( x n ); Tn1 y( xn1 ) y( xn ) h ( xn , y( xn ), h) 为显式单步法的局部截断误差。 3 ) 将准确解 y( x nn )在x n处展开; 即 在假设 y 1 步计算是精确的前提下,考 n = y(xn),即第 虑的截断误差4T (x yx /* local ) 比较 T y( n+1= y n+1 nn +1 1) n 称为局部截断误差 1 ) yn 1
注:此法亦称为预测-校正法 /* predictor-corrector method */。 可以证明该算法具有 2 阶精度,同时可以看到它是个单 步递推格式,比隐式公式的迭代求解过程简单。后面将 看到,它的稳定性高于显式欧拉法。
§1 Euler’s Method
例
作为比较,我们仍用Euler法中的那个例子。 2x y y (0 x 1) y xn yn y ( 0) 1 0.1 1.0959 解:改进的Euler公式为 0.2 1.1841 2 xn y p yn h( yn y ) 0.3 1.2662 n 0.4 1.3434 2 x n1 ) yc yn h( y p 0.5 1.4164 y p 0.6 1.4860 1 y n 1 ( y p yc ) 0.7 1.5525 2
Matlab 作 图 显 示
§1 Euler’s Method
隐式欧拉法 /* implicit Euler method */
y( x1 )
向后差商近似导数
y ( x1 ) y0 h f ( x1 , y ( x1 ))
y( x1 ) y( x0 ) h
x0 x1
y n1 y n h f ( xn1 , yn1 ) (n 0 , ... , N 1 )
梯形方法的平均化思想 可以借助几何直观说明,同 需要2个初值 y0和 y1来启动递推 Euler方法的图,见右: 过程,这样的算法称为两步法 /* double-step
Pn1
Q
Pn method */,而前面的三种算法都是单步法 /* single-step method xn */。 两步欧拉公式 /* midpoint formula */ y( x 2 ) y( x0 ) y ( x1 ) 中心差商近似导数 2h y( x2 ) y( x0 ) 2h f ( x1 , y( x1 ))
yn y( xn ) (n 1, ... , N ) 处的近似值 。
建立常微分方程数值方法的基本思想
微分方程数值解法,其实是求出方程的解y( x )在一系 列离散点上的近似值。则微分方程数值解的基本思想是: 求解区间和方程离散化。 求解区间离散化 将求解区间 a , b 离散化,是在 a , b 上插入一系列的分 点x k ,使 a x0 x1 ... xn xn1 ... x N b 记 hn xn1 xn (n 0,1,..., N 1)称为步长,一般取hn = h 称为等步长节点 。
yn1 yn h f ( xn , yn ) (n 0, ... , N 1)
h x0 记为 y( x1 ) y( x0 ) hy( x0 ) y0 h f ( x0 , y0 ) y1
§1 Euler’s Method
x1
例. 求初值问题 2x y y (0 x 1) y y ( 0) 1 解:本题的Euler公式的具体形式为
m
然后将上式右端采用第四章介绍的数值积分离散化, 从而获得原初值问题的一个离散差分格式。 (3)Taylor展开法
xn
见后面的叙述。
§1 欧拉方法 /* Euler’s Method */
欧拉公式: 亦称为欧拉折线法 /* Euler’s polygonal arc method*/ y( x1 ) y( x0 ) y( x0 ) 向前差商近似导数
如果说表格仍不够直观的话,我们用Matlab做出积分曲 线与近似值的图,如下:
§1 Euler’s Method
从图中可以看出,灰色连续的曲线就是初值问题的解析解 y 1 2 x 的曲线。而红色的星点便是数值解。在图上似乎 数值解与曲线的偏差不是很大,但不要忘记这只是在0到1范围 内的。通过后面用其他方法解本题,大家便会发现Euler方法误 差其实是很大的。
2
的主项 Tn 1 y( x n 1 ) T y( nx +1 n ) hf ( x n 1 , y ( x n 1 )) 2 /* leading term */ h hy( x n ) y( x n ) ( h3 ) h[ y( x n ) hy( x n ) ( h2 )] 2 h2 y( x n ) ( h3 ) 具有 1 阶精度。 2
从表和图可以看出,改进的Euler法的精度提高了 不少。
§1 Euler’s Method
局部截断误差和方法的阶 初值问题的单步法可用一般形式表示为 :
称为增量函数
yn1 yn h ( xn , yn , yn1 , h)
隐式欧拉法有 例如对欧拉法有 ( xn , yn , h) f ( xn , yn ), ( xn , yn , yn1 , h) f ( xn1 , yn1 ) 从 x0开始计算,如果考虑每一步产生的误差,直到 x n 则有误差 en y( xn ) yn ,称为该方法在 x 的整体截断误 n 差,分析和求得整体截断误差是复杂的。为此,我们仅考 虑从 x n 到 x n 1的局部情况,并假设 x n 之前的计算没有误 差,即 yn y( xn ) ,下面给出单步法的局部截断误差概念。
第五章 常微分方程数值解
/* Numerical Methods for Ordinary Differential Equations */
考虑一阶常微分方程的初值问题 /* Initial-Value Problem */:
dy f ( x, y) dx y ( a ) y0 x [a , b ]
xn
yn
y( xn )
1.1000 1.0954 0.6 1.1918 1.1832 0.7 1.2774 1.2649 0.8 1.3582 1.2416 0.9 1.4351 1.4142 1.0
1.5090 1.4832 1.5803 1.5492 1.6498 1.6125 1.7178 1.6733 1.7848 1.7321
由于未知数 yn+1 同时出现在等式的两边, 不能直接得到,故称为隐式 /* implicit */ 欧拉公式,而前者称 为显式 /* explicit */ 欧拉公式。 一般先用显式计算一个初值,再迭代求解。即
(0) yn 1 y n hf ( x n , y n )
( k 1) (k ) yn y hf ( x , y 1 n n1 n 1 ) k 0,1,2,
只要 f (x, y) 在[a, b] R1 上连续,且关于 y 满足 Lipschitz 条件,
即存在与 x, y 无关的常数 L 使
在唯一解。
| f ( x, y1 ) f ( x, y2 ) | L | y1 y2 |
对任意定义在 [a, b] 上的 y1(x) 和 y2(x) 都成立,则上述IVP存 本章的任务:计算出解函数 y(x) 在一系列节点 a = x0< x1<…< xn= b
(k ) 如果迭代过程收敛,则某步后 y n 1就可以作为 y n1,从而进行 下一步的计算。
梯形公式 /* trapezoid formula */
§1 Euler’s Method
— 显、隐式两种算法的平均
h yn1 yn [ f ( xn , yn ) f ( xn1 , yn1 )] ( n 0, ... , N 1) 2 A
yn1
2 xn yn h( yn ) yn
§1 Euler’s Method
取步长h=0.1。我们将计算结果与其解析解的精确值一同 y( x n ) 列在下表中,其中 x n 是节点,y n 是节点上的近似值, 是精确值,结果见下表:
xn
0.1 0.2 0.3 0.4 0.5
yn
y( xn )
N ba ( n 0 , 1 , 2 ,..., N ) , x x nh h (常数),节点为 n 0
将微分方程离散化 将微分方程离散化,通常有下述方法: (1)差商逼近法
即是用适当的差商逼近导数值。
(2)数值积分法 基本思想是先将问题转化为积分方程 x y( x m ) y( x n ) f ( x , y( x ))dx ( y( x0 ) y0 )
B
xn 1
yn1 yn1 2h f ( xn , yn ) n 1, ... , N 1
x0
x1
x2
改进欧拉法 /* modified Euler’s method */
§1 Euler’s Method
Step 1: 先用显式欧拉公式作预测,算出 y n1 y n h f ( x n, y n) Step 2: 再将 yn1 代入隐式梯形公式的右边作校正,得到
0.8 0.9 1.0 1.6153 1.67854 1.1832
1.2649 1.3416 1.4142 1.4832
1.5492
1.6125 1.6733 1.7321
我们仍取步长h=0.1,计算结果 见右表: