Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

pade

説明

pade(f,var)var = 0 における式 f の 3 次パデ近似を返します。詳細は、パデ近似を参照してください。

var を指定しない場合、padesymvar(f,1) によって決定される既定の変数を使用します。

pade(f,var,a) は点 var = a における式 f の 3 次パデ近似を返します。

pade(___,Name,Value) は、1 つ以上の Name,Value 引数ペアによって指定された追加オプションを使用します。上記のいずれの構文でも、入力引数の後に Name,Value を指定できます。

シンボリック式のパデ近似を求める

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 として指定します。関数 padey のパデ近似を返します。

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

パデ近似精度の向上

階数を増やすことによりパデ近似の精度を上げることができます。展開点が極または零の場合、OrderModerelative に設定することでも精度を上げることができます。OrderMode オプションは展開点が極または零でなければ効果がありません。

展開点が 0Order[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 に零点があるので、OrderModerelative に設定することにより精度を向上させることができます。このオプションは展開点が極または零でなければ効果がありません。

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

展開点が極または零であり OrderModerelative に設定されていると精度が増します。

パデ近似のプロット精度

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].

入力引数

すべて折りたたむ

近似する入力。シンボリック数、変数、ベクトル、行列、多次元配列、関数または式として指定します。

展開変数。シンボリック変数として指定します。var を指定しない場合、padesymvar(f,1) によって決定される既定の変数を使用します。

展開点。数値あるいはシンボリック数、変数、関数または式として指定します。展開点は展開変数では変更できません。また、展開点は Name,Value のペア引数として指定することもできます。展開点を両方の方法で指定する場合、Name,Value ペア引数が優先されます。

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は関係ありません。

R2021a より前では、コンマを使用して名前と値の各ペアを区切り、Name を引用符で囲みます。

例: pade(f,'Order',[2 2]) は、階数が m = 2 および n = 2f のパデ近似を返します。

展開点。数値あるいはシンボリック数、変数、関数または式として指定します。展開点は展開変数では変更できません。また、展開点は入力引数 a を使用して指定することもできます。展開点を両方の方法で指定する場合、Name,Value ペア引数が優先されます。

パデ近似の階数。整数、2 つの整数のベクトル、あるいはシンボリックな整数または 2 つの整数のベクトル。1 つの整数を指定すると、その整数により分子の階数 m および分母の階数 n が指定され、m = n のパデ近似が生成されます。2 つの整数から成るベクトルを指定すると、1 番目の整数により m が指定され、2 番目の整数により n が指定されます。既定では、padem = n = 3 となるパデ近似を返します。

パデ近似について絶対次数かまたは相対次数かを選択するフラグ。'absolute' または 'relative' として指定します。既定値の 'absolute' ではパデ近似の標準的な定義が使用されます。'OrderMode''relative' に設定すると、展開点 a に極または零点が存在する場合にのみ有効となります。この場合、精度を上げるために pade は分子を (var - a)p で乗算します。ここで、p は、展開点における零点または極の多重度を表しています。詳細は、パデ近似を参照してください。

詳細

すべて折りたたむ

パデ近似

既定では、pade は、階数が [m, n] のパデ近似の標準的な形式を使用して関数 f(x) を x = x0 の近傍で近似します。これは次のようになります。

a0+a1(xx0)+...+am(xx0)m1+b1(xx0)+...+bn(xx0)n.

OrderModerelative で、展開点 x = x0 に極または零が存在する場合、関数 pade はパデ近似の次の形式を使用します。

(xx0)p(a0+a1(xx0)+...+am(xx0)m)1+b1(xx0)+...+bn(xx0)n.

パラメーター p および a0 は、x = x0 の近傍における f の級数展開の最初の階数項 f = a0 (x - x0)p + O((x - x0)p + 1) によって決まります。したがって、p は x0 における極または零点の多重度です。

ヒント

  • 3 番目の引数 aExpansionPoint の両方を使用して展開点を指定する場合、ExpansionPoint で指定された値が優先されます。

アルゴリズム

  • パラメーター a1,…,bn は、パデ近似の級数展開が f の級数展開と可能な限り高い階数まで一致するように選ばれます。

  • 展開点 ±∞ および ±i∞ は許可されません。

  • pade がパデ近似を見つけられない場合は、関数呼び出しを返します。

  • pade がパデ近似を返すためには、展開点に f のテイラーまたはローラン級数展開が存在していなければなりません。

バージョン履歴

R2014b で導入

参考

|

トピック