PADE近似原理及算例

基本原理

PADE近似是以有理分式的形式对目标函数 f ( x ) f(x) f(x)进行逼近的。假如以零点为领域,其具体形式如下所示:
R m , n = p ( x ) q ( x ) = p 0 + p 1 x + p 2 x 2 + ⋯ + p m x m 1 + q 1 x + q 2 x 2 + ⋯ + q n x n (0) R_{m,n} = \frac{p(x)}{q(x)} = \frac{p_0 + p_1x + p_2x^2 + \dots + p_mx^m}{1 + q_1x + q_2x^2 + \dots + q_nx^n} \tag{0} Rm,n=q(x)p(x)=1+q1x+q2x2++qnxnp0+p1x+p2x2++pmxm(0)

分子 p ( x ) p(x) p(x)是m阶多项式, q ( x ) q(x) q(x)是n阶多项式, R m , n R_{m,n} Rm,n也被称作是函数 f ( x ) f(x) f(x) [ m , n ] [m,n] [m,n]阶PADE近似。

算例1: e x e^x ex的PADE近似

基本思想:利用 f ( x ) f(x) f(x)在x=0处,m+n阶泰勒展开表达式,求解PADE近似 R m , n R_{m,n} Rm,n的系数:
f ( x ) = f ( 0 ) + f ′ ( 0 ) 1 ! + f ′ ′ ( 0 ) 2 ! + ⋯ + f ( m + n ) ( 0 ) n ! + O ( x m + n ) (1) f(x) = f(0) + \frac{f'(0)}{1!} + \frac{f''(0)}{2!} + \dots + \frac{f^{(m+n)}(0)}{n!} + O(x^{m+n}) \tag{1} f(x)=f(0)+1!f(0)+2!f′′(0)++n!f(m+n)(0)+O(xm+n)(1)
f ( x ) = R m , n ( x ) + O ( x m + n ) (2) f(x) = R_{m,n}(x) + O(x^{m+n}) \tag{2} f(x)=Rm,n(x)+O(xm+n)(2)

在上述公式中,(1)和(2)相等,所以我们可以将(1)和(2)联立求解 R m , n R_{m,n} Rm,n的系数。
f ( x ) = e x f(x)=e^x f(x)=ex [ 1 , 1 ] [1,1] [1,1]阶PADE近似为例,具体如下:
1 + x + 1 2 x 2 = p 0 + p 1 x 1 + q 1 x ↓ p 0 + p 1 x = ( 1 + x + 1 x x 2 ) ( 1 + q 1 x ) 1+x+\frac{1}{2}x^2=\frac{p_0+p_1x}{1+q_1x}\\ \downarrow \\ p_0+p_1x=(1+x+\frac{1}{x}x^2)(1+q_1x) 1+x+21x2=1+q1xp0+p1xp0+p1x=(1+x+x1x2)(1+q1x)

将2阶以上的高阶项忽略,等式左右两边系数相同,所以得到如下式子:
{ p 0 = 1 p 1 = 1 + q 1 1 2 + q 1 = 0 \begin{cases} p_0=1 \\ p_1=1+q_1 \\ \frac{1}{2}+q_1=0 \end{cases} p0=1p1=1+q121+q1=0

求解所得,如下所示:
{ p 0 = 1 , q 1 = − 0.5 , p 1 = 0.5 , \begin{cases} p_0=1,\\ q_1=-0.5,\\ p_1=0.5,\\ \end{cases} p0=1,q1=0.5,p1=0.5,

所以, f ( x ) = e x f(x)=e^x f(x)=ex [ 1 , 1 ] [1,1] [1,1]阶PADE近似,具体如下所示:
e P A 1 , 1 x ≈ 1 + 0.5 x 1 − 0.5 x e^x_{PA_{1,1}} \approx \frac{1+0.5x}{1-0.5x} ePA1,1x10.5x1+0.5x

MATLAB实现

使用Matlab求解Pade近似表达式。Matlab求解 e x e^x ex [ 1 , 1 ] , [ 2 , 2 ] , [ 3 , 3 ] [1,1],[2,2],[3,3] [1,1],[2,2],[3,3]阶PADE近似,具体如下所示:

clc; clear;
syms x;
pade(exp(x),x,0,'Order',[1 1])
pade(exp(x),x,0,'Order',[2 2])
pade(exp(x),x,0,'Order',[3 3])

% pade(sin(x),x,0,'Order',[1,1])
% pade(sin(x),x,0,'Order',[2,2])
% 
% taylor(sin(x),x,'Order',1)

hold on;fplot(exp(x),'r-*','linewidth',3)

fplot(pade(exp(x),x,0,'Order',[1,1]),'g','LineWidth',1)
fplot(pade(exp(x),x,0,'Order',[2,2]),'b','LineWidth',2)
fplot(pade(exp(x),x,0,'Order',[3,3]),'k','LineWidth',3)

grid on;axis([-2 2 0 8]);legend('exp(x)','[1,1]','[2,2]','[3,3]')

e^x在[-2,2]范围内的PADE近似结果

相关参考

  1. 鲸大鱼的自我修养关于Pade近似的相关blog
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐