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()
関数を使用して結果の精度を変更しました。与えられた多項式に従って多項式を変更し、要件に応じて精度を変更できます。