Main Content

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

root

説明

root(p,x) は、x について、シンボリック多項式 p の番号付けされた根の列ベクトルを返します。高次多項式の根をシンボリックに解くと、複雑になったり数学的に不可能だったりする場合があります。この場合、Symbolic Math Toolbox™ では関数 root を使用して多項式の根を表します。

root(p,x,k) は、x について、シンボリック多項式 pk 番目の根を表します。

すべて折りたたむ

多項式 x3+1 の根を root を使用して表します。関数 root は列ベクトルを返します。このベクトルの要素は、多項式の 3 つの根を表します。

syms x
p = x^3 + 1;
root(p,x)
ans = 

(root(x3+1,x,1)root(x3+1,x,2)root(x3+1,x,3))

root(x3+1,x,1)p の 1 番目の根を表し、root(x3+1,x,2) は 2 番目の根を表します。以下同様に続きます。この構文を使用して、高次多項式の根を表します。

高次多項式を解く場合、solveroot を使用して根を表します。あるいは、MaxDegree オプションを使用して明示的な解を返したり、vpa を使用して数値結果を返したりもできます。

x^3 + 3*x - 16 の根を求めます。

syms x
p = x^3 + 3*x - 16;
R = solve(p,x)
R = 

(root(z3+3z-16,z,1)root(z3+3z-16,z,2)root(z3+3z-16,z,3))

MaxDegree オプションに多項式の次数を設定して、明示的に根を求めます。4 より大きい次数の多項式は明示的な解をもちません。

Rexplicit = solve(p,x,"MaxDegree",3)
Rexplicit = 

(σ1-1σ112σ1-σ12-31σ1+σ1i212σ1-σ12+31σ1+σ1i2)where  σ1=65+81/3

vpa を使用して R を高精度浮動小数点に変換し、根を数値的に求めます。

Rnumeric = vpa(R)
Rnumeric = 

(2.1267693318103912337456401562601-1.0633846659051956168728200781301-2.5283118563671914055545884653776i-1.0633846659051956168728200781301+2.5283118563671914055545884653776i)

root の呼び出しにパラメーターが含まれる場合は、subs を使用してパラメーターに数値を代入してから vpa を呼び出します。

関数 root は、simplifysubsdiff などの Symbolic Math Toolbox 関数への入力として使用できます。

root を含む式を関数 simplify を使用して単純化します。

syms x
r = root(x^6 + x, x, 1);
simplify(sin(r)^2 + cos(r)^2)
ans = 1

subs を使用して root 内のパラメーターに数値を代入します。

syms b
subs(root(x^2 + b*x, x, 1), b, 5)
ans = root(x2+5x,x,1)

vpa を使用して root を数値形式に変換する前に、subs を使用したパラメーターへの代入が必要です。

diff を使用して root を含む式をパラメーターについて微分します。

diff(root(x^2 + b*x, x, 1), b)
ans = 

root(x2+bx,x,1)b

ilaplace を使用して 2 つの多項式の比率の逆ラプラス変換を求めます。逆ラプラス変換は root に関して返されます。

syms s
G = (s^3 + 1)/(s^6 + s^5 + s^2);
H = ilaplace(G)
H = 

t-k=14etroot(z4+z3+1,z,k)4root(z4+z3+1,z,k)+3

関数 root が出力で得られる場合、この後のシンボリック計算で関数 root を入力として使用できます。しかし、数値結果が求められる場合は、vpa を使用して、関数 root を高精度の数値結果に変換します。

vpa を使用して逆ラプラス変換を数値形式に変換します。

H_vpa = simplify(vpa(H))
H_vpa = t+0.30881178580997278695808136329347e-1.0189127943851558447865795886366tcos(0.60256541999859902604398442197193t)-0.30881178580997278695808136329347e0.5189127943851558447865795886366tcos(0.666609844932018579153758800733t)-0.6919689479355443779463355813596e-1.0189127943851558447865795886366tsin(0.60256541999859902604398442197193t)-0.16223098826244593894459034019473e0.5189127943851558447865795886366tsin(0.666609844932018579153758800733t)

入力引数

すべて折りたたむ

シンボリック多項式。シンボリック式として指定します。

変数。シンボリック変数として指定します。

多項式の根の番号。数値、ベクトル、行列、多次元配列、あるいはシンボリック数、ベクトル、行列、関数または多次元配列として指定します。k が非スカラーの場合、rootk の要素単位で動作します。

例: root(f,x,3) は、f の 3 番目の根を表します。

ヒント

  • vpa を使用して可変精度のシンボリック数を返すことにより、関数 root を含むシンボリック式を数値的に近似することができます。R2023a 以降では、matlabFunction を使用することで、式を Symbolic Math Toolbox なしで使用できる MATLAB® 関数に変換できます。生成されたファイルは、数値 double データ型で演算を行う関数 roots を使用します。

バージョン履歴

R2015b で導入

参考

| |