pade
パデ近似
説明
例
シンボリック式のパデ近似を求める
sin(x) のパデ近似を求めます。既定では、pade は 3 次パデ近似を返します。
syms x pade(sin(x))
ans = -(x*(7*x^2 - 60))/(3*(x^2 + 20))
展開変数の指定
展開変数を指定しない場合は symvar によって選択されます。sin(x) + cos(y) のパデ近似を求めます。関数 symvar は展開変数として x を選択します。
syms x y pade(sin(x) + cos(y))
ans = (- 7*x^3 + 3*cos(y)*x^2 + 60*x + 60*cos(y))/(3*(x^2 + 20))
展開変数を y として指定します。関数 pade は y のパデ近似を返します。
pade(sin(x) + cos(y),y)
ans = (12*sin(x) + y^2*sin(x) - 5*y^2 + 12)/(y^2 + 12)
特異点における関数の値の近似
tan(3*pi/4) の値を求めます。pade を使用して tan(x) のパデ近似を求め、subs を使用して代入して tan(3*pi/4) を求めます。
syms x f = tan(x); P = pade(f); y = subs(P,x,3*pi/4)
y = (pi*((9*pi^2)/16 - 15))/(4*((9*pi^2)/8 - 5))
vpa を使用して y を数値に変換します。
vpa(y)
ans = -1.2158518789569086447244881326842
パデ近似精度の向上
階数を増やすことによりパデ近似の精度を上げることができます。展開点が極または零の場合、OrderMode を relative に設定することでも精度を上げることができます。OrderMode オプションは展開点が極または零でなければ効果がありません。
展開点が 0、Order が [1 1] の pade を使用して tan(x) のパデ近似を求めます。subs を使用してパデ近似に代入することにより tan(1/5) の値を求め、vpa を使用して 1/5 を数値に変換します。
syms x p11 = pade(tan(x),x,0,'Order',[1 1]) p11 = subs(p11,x,vpa(1/5))
p11 = x p11 = 0.2
tan(1/5) の実際の値から p11 を引いて近似の誤差を求めます。
y = tan(vpa(1/5)); error = y - p11
error = 0.0027100355086724833213582716475345
Order を使用して階数を増やすことによりパデ近似の精度を上げます。Order を [2 2] に設定し、誤差を求めます。
p22 = pade(tan(x),x,0,'Order',[2 2]) p22 = subs(p22,x,vpa(1/5)); error = y - p22
p22 = -(3*x)/(x^2 - 3) error = 0.0000073328059697806186555689448317799
階数が増えるにつれて精度が向上します。
展開点が極または零であると、パデ近似の精度が下がります。OrderMode オプションを relative に設定することにより、低下した精度を補正できます。詳細については、パデ近似を参照してください。関数 tan には 0 に零点があるので、OrderMode を relative に設定することにより精度を向上させることができます。このオプションは展開点が極または零でなければ効果がありません。
p22Rel = pade(tan(x),x,0,'Order',[2 2],'OrderMode','relative') p22Rel = subs(p22Rel,x,vpa(1/5)); error = y - p22Rel
p22Rel = (x*(x^2 - 15))/(3*(2*x^2 - 5)) error = 0.0000000084084014806113311713765317725998
展開点が極または零であり OrderMode がrelative に設定されていると精度が増します。
パデ近似のプロット精度
exp(x) と階数 [1 1] から [4 4] それぞれのパデ近似との差をプロットします。axis を使用して関心領域に注目します。プロットからパデ近似の階数が増えるにつれて精度が上がっていることがわかります。
syms x expr = exp(x); hold on grid on for i = 1:4 fplot(expr - pade(expr,'Order',i)) end axis([-4 4 -4 4]) legend('Order [1,1]','Order [2,2]','Order [3,3]','Order [4,4]',... 'Location','Best') title('Difference Between exp(x) and its Pade Approximant') ylabel('Error')
![Figure contains an axes object. The axes object with title Difference Between exp(x) and its Pade Approximant, ylabel Error contains 4 objects of type functionline. These objects represent Order [1,1], Order [2,2], Order [3,3], Order [4,4].](../examples/symbolic/win64/PlotTheAccuracyOfThePadApproximantExample_01.png)
入力引数
名前と値の引数
詳細
ヒント
3 番目の引数
aとExpansionPointの両方を使用して展開点を指定する場合、ExpansionPointで指定された値が優先されます。
アルゴリズム
パラメーター a1,…,bn は、パデ近似の級数展開が f の級数展開と可能な限り高い階数まで一致するように選ばれます。
展開点 ±∞ および ±i∞ は許可されません。
padeがパデ近似を求めることができない場合は、関数呼び出しを返します。padeがパデ近似を返すためには、展開点に f のテイラーまたはローラン級数展開が存在していなければなりません。
バージョン履歴
R2014b で導入