PADE近似原理及算例
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+p1x↓p0+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,1x≈1−0.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近似结果](https://i-blog.csdnimg.cn/direct/b236474df7d44a3997d88b9a0daad53b.png#pic_center)
相关参考
更多推荐

所有评论(0)