Matlab で多項式の根を取得する

Ammar Ali 2023年1月30日
  1. MATLAB の roots() 関数を使用して多項式の根を取得する
  2. MATLAB で solve() 関数を使用して多項式の根を取得する
Matlab で多項式の根を取得する

このチュートリアルでは、MATLAB の roots() 関数と solve() 関数を使用して多項式の根を見つける方法を紹介します。

MATLAB の roots() 関数を使用して多項式の根を取得する

多項式の根を見つけたい場合は、MATLAB の roots() 関数を使用できます。この関数のこの入力は、多項式の係数を含むベクトルです。多項式に累乗が存在しない場合、その係数として 0 が使用されます。この関数の出力は、指定された多項式の実数根と虚数根を含む列ベクトルです。たとえば、2 次多項式の根を見つけましょう:2x ^ 2-3x + 6 = 0。最大の累乗から始まる多項式係数を定義する必要があります。累乗が存在しない場合は、係数として 0 を使用します。以下のコードを参照してください。

poly = [2 -3 6];
p_roots = roots(poly)

出力:

p_roots =

   0.7500 + 1.5612i
   0.7500 - 1.5612i

上記のコードでは、最高の累乗から始まる多項式の係数のみを使用しました。与えられた多項式に従って、多項式の係数を変更できます。知っている、四次多項式の根を見つけましょう:2x ^ 4 + 1 = 0。以下のコードを参照してください。

poly = [2 0 0 0 1];
p_roots = roots(poly)

出力:

p_roots =

  -0.5946 + 0.5946i
  -0.5946 - 0.5946i
   0.5946 + 0.5946i
   0.5946 - 0.5946i

上記のコードでは、3つの累乗が欠落しているため、2つの多項式の間に 3つの 0 を使用しました。roots() 関数の詳細については、このリンクを確認してください。

MATLAB で solve() 関数を使用して多項式の根を取得する

多項式の根を見つけたい場合は、MATLAB の solve() 関数を使用できます。この関数のこの入力は多項式です。この関数の出力は、指定された多項式の実数根と虚数根を含む列ベクトルです。たとえば、2 次多項式の根を見つけましょう:2x ^ 2-3x + 6 = 0。多項式を定義する必要があります。以下のコードを参照してください。

syms x
poly = 2*x^2 -3*x +6 == 0;
p_roots = solve(poly,x)
p_roots = vpa(p_roots,2)

出力:

p_roots =
 
 0.75 - 1.6i
 0.75 + 1.6i

上記のコードでは、多項式全体を定義し、vpa() 関数を使用して結果の精度を変更しました。与えられた多項式に従って多項式を変更し、要件に応じて精度を変更できます。知っている、四次多項式の根を見つけましょう:2x ^ 4 + 1 = 0。以下のコードを参照してください。

syms x
poly = 2*x^4 +1 == 0;
p_roots = solve(poly,x);
p_roots = vpa(p_roots,2)

出力:

p_roots =
 
 - 0.59 - 0.59i
 - 0.59 + 0.59i
   0.59 - 0.59i
   0.59 + 0.59i

上記のコードでは、多項式全体を定義し、vpa() 関数を使用して結果の精度を変更しました。与えられた多項式に従って多項式を変更し、要件に応じて精度を変更できます。

著者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook