このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
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')
入力引数
詳細
ヒント
3 番目の引数
a
とExpansionPoint
の両方を使用して展開点を指定する場合、ExpansionPoint
で指定された値が優先されます。
アルゴリズム
パラメーター a1,…,bn は、パデ近似の級数展開が f の級数展開と可能な限り高い階数まで一致するように選ばれます。
展開点 ±∞ および ±i∞ は許可されません。
pade
がパデ近似を求めることができない場合は、関数呼び出しを返します。pade
がパデ近似を返すためには、展開点に f のテイラーまたはローラン級数展開が存在していなければなりません。
バージョン履歴
R2014b で導入