Main Content

roots

説明

r = roots(p) は、p の係数で表される多項式の根を列ベクトル r として返します。入力 pn+1 個の多項式係数を含むベクトルで、xn の係数で始まります。たとえば、p = [3 2 -2] は多項式 3x2+2x2 を表します。0 の係数は、方程式に存在しない中間のべき乗を示します。

関数 roots は、次の形式の多項方程式を解きます。p1xn+...+pnx+pn+1=0多項方程式には、非負の指数をもつ変数が 1 つ含まれます。

すべて折りたたむ

方程式 3x2-2x-4=0 を解きます。

まず多項式を表すベクトルを作成してから、根を求めます。

p = [3 -2 -4];
r = roots(p)
r = 2×1

    1.5352
   -0.8685

方程式 x4-1=0 を解きます。

まず多項式を表すベクトルを作成してから、根を求めます。

p = [1 0 0 0 -1];
r = roots(p)
r = 4×1 complex

  -1.0000 + 0.0000i
   0.0000 + 1.0000i
   0.0000 - 1.0000i
   1.0000 + 0.0000i

入力引数

すべて折りたたむ

多項式係数。ベクトルとして指定します。たとえば、ベクトル [1 0 1] は多項式 x2+1 を表し、ベクトル [3.13 -2.21 5.99] は多項式 3.13x22.21x+5.99 を表します。

詳細については、多項式の作成および評価を参照してください。

データ型: single | double
複素数のサポート: あり

ヒント

  • 関数 poly を使用して多項式をその根から求めるには、p = poly(r) を実行します。関数 poly は、関数 roots の逆の演算を行います。

  • 非線形方程式の根を求めるには、関数 fzero を使用します。関数 roots は多項式にのみ使用できますが、関数 fzero はより幅広く各種の方程式に適用することができます。

アルゴリズム

関数 roots は、pn+1 個の要素をもつベクトルとして扱います。これは nn 列の行列 A の、n 次元目の特性多項式を表します。多項式の根は、コンパニオン行列 A の固有値を計算して求められます。

A = diag(ones(n-1,1),-1);
A(1,:) = -p(2:n+1)./p(1);
r = eig(A)

この結果は、コンパニオン行列 A の丸め誤差の範囲内にある行列の厳密な固有値です。しかし、それらが p の係数の丸め誤差範囲内にある、多項式の厳密な根であるとは限りません。

拡張機能

バージョン履歴

R2006a より前に導入