帕德近似,原理与Matlab实现,指数函数的Pade近似

帕德近似,原理与Matlab实现,指数函数的Pade近似泰勒展开以多项式的形式对 fx 进行逼近 帕德近似则是以有理分式的形式对目标函数 fx 进行逼近

大家好,欢迎来到IT知识分享网。

基本原理

  泰勒展开以多项式的形式对 f ( x ) f(x) f(x)进行逼近,帕德近似则是以有理分式的形式对目标函数 f ( x ) f(x) f(x)进行逼近。帕德近似的基本形式如下所示(以零点为邻域):
R m , n ( x ) = 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 {R_{m,n}}\left( x \right) = \frac{
{p\left( x \right)}}{
{q\left( x \right)}} = \frac{
{
{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}}}
Rm,n(x)=q(x)p(x)=1+q1x+q2x2++qnxnp0+p1x+p2x2++pmxm

其中, p ( x ) p(x) p(x) q ( x ) q(x) q(x)分别为 m m m n n n阶多项式, R m , n ( x ) {R_{m,n}}\left( x \right) Rm,n(x)也被称作 f ( x ) f(x) f(x) [ m , n ] [m,n] [m,n]阶帕德近似。注意, q ( x ) q(x) q(x)的常数项为 1 1 1

求解方法1

  利用 R m , n ( x ) R_{m,n}(x) Rm,n(x) f ( x ) , f(x), f(x) x = 0 x=0 x=0处,前 m + n m+n m+n阶导数与 f ( x ) f(x) f(x)对应项相等,求解帕德近似的系数:
{ R m , n ( x 0 ) = f ( x 0 ) R m , n ′ ( x 0 ) = f ′ ( x 0 ) R m , n ′ ′ ( x 0 ) = f ′ ′ ( x 0 ) ⋮ R m , n ( m + n ) ( x 0 ) = f ( m + n ) ( x 0 ) → { p 0 , p 1 , p 2 , . . . + p m q 1 , q 2 , . . . , q n \left\{ {\begin{array}{c} {
{R_{m,n}}\left( {
{x_0}} \right) = f\left( {
{x_0}} \right)}\\ {
{R_{m,n}^{‘}}\left( {
{x_0}} \right) = f’\left( {
{x_0}} \right)}\\ {
{R_{m,n}^{”}}\left( {
{x_0}} \right) = f”\left( {
{x_0}} \right)}\\ \vdots \\ {R_{m,n}^{\left( {m + n} \right)}\left( {
{x_0}} \right) = {f^{\left( {m + n} \right)}}\left( {
{x_0}} \right)} \end{array}} \right. \to \left\{ {\begin{array}{c} {
{p_0},{p_1},{p_2},… + {p_m}}\\ {
{q_1},{q_2},…,{q_n}} \end{array}} \right.


Rm,n(x0)=f(x0)Rm,n(x0)=f(x0)Rm,n′′(x0)=f′′(x0)Rm,n(m+n)(x0)=f(m+n)(x0)
{
p0,p1,p2,+pmq1,q2,,qn

  示例:求解 f ( x ) = e x f\left( x \right) = {e^x} f(x)=ex [ 1 , 1 ] [1,1] [1,1]阶帕德近似:
{ R 1 , 1 ( 0 ) = p 0 + p 1 x 1 + q 1 x = p 0 1 = 1 R 1 , 1 ′ ( 0 ) = p 1 − p 0 q 1 ( 1 + q 1 x ) 2 = p 1 − p 0 q 1 ( 1 ) 2 = 1 R 1 , 1 ′ ′ ( 0 ) = − 2 ( p 1 − p 0 q 1 ) ( 1 + q 1 x ) q 1 ( 1 + q 1 x ) 2 = − 2 ( p 1 − p 0 q 1 ) q 1 ( 1 ) 2 = 1 → { p 0 = 1 p 1 = 0.5 q 1 = − 0.5 \left\{ \begin{array}{l} {R_{1,1}}\left( 0 \right) = \frac{
{
{p_0} + {p_1}x}}{
{1 + {q_1}x}} = \frac{
{
{p_0}}}{1} = 1\\ {R^\prime_{1,1}} \left( 0 \right) = \frac{
{
{p_1} – {p_0}{q_1}}}{
{
{
{\left( {1 + {q_1}x} \right)}^2}}} = \frac{
{
{p_1} – {p_0}{q_1}}}{
{
{
{\left( 1 \right)}^2}}} = 1\\ {R^{\prime \prime }_{1,1}}\left( 0 \right) = \frac{
{ – 2\left( {
{p_1} – {p_0}{q_1}} \right)\left( {1 + {q_1}x} \right){q_1}}}{
{
{
{\left( {1 + {q_1}x} \right)}^2}}} = \frac{
{ – 2\left( {
{p_1} – {p_0}{q_1}} \right){q_1}}}{
{
{
{\left( 1 \right)}^2}}} = 1 \end{array} \right. \to \left\{ \begin{array}{l} {p_0} = 1\\ {p_1} = 0.5\\ {q_1} = – 0.5 \end{array} \right.


R1,1(0)=1+q1xp0+p1x=1p0=1R1,1(0)=(1+q1x)2p1p0q1=(1)2p1p0q1=1R1,1′′(0)=(1+q1x)22(p1p0q1)(1+q1x)q1=(1)22(p1p0q1)q1=1


p0=1p1=0.5q1=0.5

  于是, f ( x ) = e x f\left( x \right) = {e^x} f(x)=ex [ 1 , 1 ] [1,1] [1,1]阶帕德近似表达式为:
R 1 , 1 ( x ) = 1 + 0.5 x 1 − 0.5 x {R_{1,1}}\left( x \right) = \frac{
{1 + 0.5x}}{
{1 – 0.5x}}
R1,1(x)=10.5x1+0.5x

求解方法2

  利用 f ( x ) f(x) f(x) x = 0 x=0 x=0处, m + n m+n m+n阶泰勒展开表达式,求解帕德近似 R m , n ( x ) R_{m,n}(x) Rm,n(x)的系数:
{ f ( x ) = p ( x ) + O ( x m + n ) = f ( 0 ) + f ′ ( 0 ) 1 ! x + f ′ ′ ( 0 ) 2 ! x 2 + . . . + f ( m + n ) ( 0 ) n ! x m + n + O ( x m + n ) f ( x ) = R m , n ( x ) + O ( x m + n ) = 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 + O ( x m + n ) \left\{ \begin{array}{l} f\left( x \right) = p\left( x \right) + O\left( {
{x^{m + n}}} \right) = f\left( 0 \right) + \frac{
{f’\left( 0 \right)}}{
{1!}}x + \frac{
{f”\left( 0 \right)}}{
{2!}}{x^2} + … + \frac{
{
{f^{\left( {m + n} \right)}}\left( 0 \right)}}{
{n!}}{x^{m + n}} + O\left( {
{x^{m + n}}} \right)\\ f\left( x \right) = {R_{m,n}}\left( x \right) + O\left( {
{x^{m + n}}} \right) = \frac{
{
{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}}} + O\left( {
{x^{m + n}}} \right) \end{array} \right.
{
f(x)=p(x)+O(xm+n)=f(0)+1!f(0)x+2!f′′(0)x2++n!f(m+n)(0)xm+n+O(xm+n)f(x)=Rm,n(x)+O(xm+n)=1+q1x+q2x2++qnxnp0+p1x+p2x2++pmxm+O(xm+n)

  示例,求解 f ( x ) = e x f\left( x \right) = {e^x} f(x)=ex [ 1 , 1 ] [1,1] [1,1]阶帕德近似:
{ e x = 1 + x + 1 2 x 2 + O ( x 2 ) e x = p 0 + p 1 x 1 + q 1 x + O ( x 2 ) → { 1 + x + 0.5 x 2 = p 0 + p 1 x 1 + q 1 x + O ( x 2 ) → 1 + ( 1 + q 1 ) x + ( 0.5 + q 1 ) x 2 = p 0 + p 1 x + O ( x 2 ) → { 1 = p 0 1 + q 1 = p 1 0.5 + q 1 = 0 → { p 0 = 1 p 1 = 0.5 q 1 = − 0.5 \left\{ \begin{array}{l} {e^x} = 1 + x + \frac{1}{2}{x^2} + O\left( {
{x^2}} \right)\\ {e^x} = \frac{
{
{p_0} + {p_1}x}}{
{1 + {q_1}x}} + O\left( {
{x^2}} \right) \end{array} \right. \to \left\{ \begin{array}{l} 1 + x + 0.5{x^2} = \frac{
{
{p_0} + {p_1}x}}{
{1 + {q_1}x}} + O\left( {
{x^2}} \right)\\ \to1 + \left( {1 + {q_1}} \right)x + \left( {0.5 + {q_1}} \right){x^2} = {p_0} + {p_1}x + O\left( {
{x^2}} \right) \end{array} \right. \to \left\{ \begin{array}{l} 1 = {p_0}\\ 1 + {q_1} = {p_1}\\ 0.5 + {q_1} = 0 \end{array} \right. \to \left\{ \begin{array}{l} {p_0} = 1\\ {p_1} = 0.5\\ {q_1} = – 0.5 \end{array} \right.
{
ex=1+x+21x2+O(x2)ex=1+q1xp0+p1x+O(x2)
{
1+x+0.5x2=1+q1xp0+p1x+O(x2)1+(1+q1)x+(0.5+q1)x2=p0+p1x+O(x2)


1=p01+q1=p10.5+q1=0


p0=1p1=0.5q1=0.5

  于是, f ( x ) = e x f\left( x \right) = {e^x} f(x)=ex [ 1 , 1 ] [1,1] [1,1]阶帕德近似表达式为:
R 1 , 1 ( x ) = 1 + 0.5 x 1 − 0.5 x {R_{1,1}}\left( x \right) = \frac{
{1 + 0.5x}}{
{1 – 0.5x}}
R1,1(x)=10.5x1+0.5x

Matlab实现

  实际应用过程中,可以借助Matlab求解Pade近似表达式。Matlab求解指数函数的 [ 1 , 1 ] [1,1] [1,1] [ 2 , 2 ] [2,2] [2,2] [ 3 , 3 ] [3,3] [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]) 
clc;clear;close all; syms x;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', 1) fplot(pade(exp(x),x,0,'Order',[3 3]),'k','linewidth', 1) grid on;axis([-2 2 0 8]); legend('epx(x)','[1,1]','[2,2]','[3,3]'); 

参考文献

[1] Matlab文档:Pade approximant.

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/132040.html

(0)
上一篇 2025-08-03 17:00
下一篇 2025-08-03 17:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信