反向欧拉法

数值分析科学计算中,反向欧拉法隐式欧拉法是求解常微分方程最基本的数值方法之一。其类似于(标准)欧拉法,不过是一种隐式方法。反向欧拉法的时间误差为一阶。

描述

考虑常微分方程

解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle \frac{\mathrm{d} y}{\mathrm{d} t} = f(t,y) }

有初值解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle y(t_0) = y_0. } 此处函数解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle f} 与初值数据解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle t_0}解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle y_0} 均未知;函数解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle y} 取决于实变量解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle t} ,同样未知。数值方法产生一个序列解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle y_0, y_1, y_2, \ldots } ,使解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle y_k } 近似于解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle y(t_0+kh) } ,其中解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle h } 称为步长。

反向欧拉法计算近似值的方法是

解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle y_{k+1} = y_k + h f(t_{k+1}, y_{k+1}). } [1]:57

异于(正向)欧拉法,后者用的是解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle f(t_k, y_k) } 而非解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle f(t_{k+1}, y_{k+1})}

反向欧拉法是一种隐式方法:新近似值解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle y_{k+1} } 在方程两侧都出现,因此该方法要求解未知解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle y_{k+1} } 的代数方程。对非刚性问题,这可采用定点迭代法:

解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle y_{k+1}^{[0]} = y_k, \quad y_{k+1}^{[i+1]} = y_k + h f(t_{k+1}, y_{k+1}^{[i]}). }

若序列收敛(在给定精度内),则该方法会将其极限作为新的近似 解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle y_{k+1} }[1]:57

或者,也可以使用牛顿–拉斐森法求解代数方程。

推导

将微分方程解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle \frac{\mathrm{d} y}{\mathrm{d} t} = f(t,y) }解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle t_n } 积分到解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle t_{n+1} = t_n + h } ,有

解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle y(t_{n+1}) - y(t_n) = \int_{t_n}^{t_{n+1}} f(t, y(t)) \,\mathrm{d}t. }

现在用右手矩形法近似计算右式的积分:

解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle y(t_{n+1}) - y(t_n) \approx h f(t_{n+1}, y(t_{n+1})). }

最后,用解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle y_n } 应近似于解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle y(t_n) } 的性质,就得到了反向欧拉法公式。[1]:57

若用左手矩形法,同样的推导会得到(标准)欧拉法。

分析

 
圆盘外的粉色区域是反向欧拉法的稳域。

大O符号表示反向欧拉法的局部截断误差(LTE)(定义为迭代一步产生的误差)为解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle O(h^2) } 。特定时刻解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle t } 的误差为解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle O(h^2) } ,这是说该方法的阶数为1。一般来说,具有解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle O(h^{k+1}) } LTE的方法定义为k阶。

反向欧拉法的绝对稳域是以1为圆心,半径为1的圆盘在平面内的补集,如图所示。[1]:70这包括整个复平面的左半部,使其适于求解刚性方程[1]:71事实上,反向欧拉法甚至是L-稳定的。

利用反向欧拉法求解离散稳定系统的区域是半径为0.5的圆,位于z平面的(0.5, 0)处。[2]

推广与改进

反向欧拉法是(前向)欧拉法的一种变体。其他变体还有半隐式欧拉法和指数欧拉法。

反向欧拉法可视为1阶段的龙格-库塔法,可用Butcher表描述:

解析失败 (SVG(MathML可通过浏览器插件启用):从服务器“http://localhost:6011/zh.wikipedia.org/v1/”返回无效的响应(“Math extension cannot connect to Restbase.”):): {\displaystyle \begin{array}{c|c} 1 & 1 \\ \hline & 1 \\ \end{array} }

该方法也可看作是1步的线性多步法,是Adams–Moulton法族中的第一个方法,也是后向微分法的第一个方法。

另见

注释

  1. ^ 1.0 1.1 1.2 1.3 1.4 Butcher 2003
  2. ^ Wai-Kai Chen, Ed., Analog and VLSI Circuits The Circuits and Filters Handbook, 3rd ed. Chicago, USA: CRC Press, 2009.

参考文献