MATLAB ガイド:多項式導関数の効率的な計算
数学では、導関数は変数に対する関数の変化率を表します。簡単に言えば、特定の時点で関数がどのように変化しているかを示します。微積分は微積分の基礎であり、変化や運動をモデル化するために物理学、工学、経済学などの分野で広く使用されています。
たとえば、時間の経過に伴う車の位置を記述する関数がある場合、その関数の導関数から車の速度 (位置の変化率) が得られます。
多項式の導関数
多項式は、さまざまな累乗をした変数と係数を組み合わせた数式です。たとえば、多項式 P(x) =3x2 + 2x + 5 は 2 次多項式です。
多項式関数の導関数は、単純なルールを適用することで求められます。各項について、係数に指数を乗算し、その後、指数を 1 減算します。このプロセスは、多項式の各項に対して繰り返されます。
たとえば、次の多項式を考えてみましょう。
P(x) = 3x3 + 4x2 + 2x + 1
導関数 P(x) は −
として計算されます。- 用語 3x3 の場合:3 に 3 (指数) を掛けると、9x2 になります。
- 4x2 という用語の場合:4 に 2 を掛けると、結果は 8x になります。
- 用語 2x の場合:2 に 1 を掛けて、結果は 2 になります。
- 定数項 (1) の導関数は 0 です。
したがって、導関数は −
P(x) = 9x2 + 8x + 2
MATLAB の導関数
MATLAB では、組み込み関数を使用して多項式の導関数を簡単に計算できます。 MATLAB の多項式は、変数の降べき乗順に並べられた係数を含むベクトルで表されます。
多項式の導関数を求めるために、MATLAB には関数 Polyder が用意されています。
構文
k = polyder(p) k = polyder(a,b) [q,d] = polyder(a,b)
構文の説明
k =Polyder(p) は、p の係数によって与えられる多項式の導関数を計算し、その結果、導関数 d/dx p(x) を表す新しい多項式 k(x) が得られます。
k =Polyder(a,b) は 2 つの多項式 a と b の積の微分を計算し、次のような新しい多項式 k(x) が得られます。
$$\mathrm{\frac{d}{dx}[a(x) \:\cdot \:b(x)]}$$
[q, d] =Polyder(a, b) は、2 つの多項式 a と b の商の導関数を計算し、a(x)/b(x) の導関数を表す q(x) (分子) と d(x) (分母) の 2 つの多項式を返します。
例 1:Polyder(p) を使用した導関数の計算
多項式があると考えてみましょう
P(x) = 4x3 + 3x2 + 2x + 1
この多項式は、MATLAB の係数のベクトルで表すことができます -
p = [4 3 2 1];
この多項式の導関数を計算するには、MATLAB の関数 Polyder を使用します -
k = polyder(p);
matlab コマンド ウィンドウでコードを実行すると、出力は次のようになります。
>> p = [4 3 2 1]; k = polyder(p) k = 12 6 2 >>
項 4x3 の導関数は 12x2 です (係数 4 に指数 3 を乗算し、指数を 1 減じます)。
項 3x2 の導関数は 6x です。
項 2x の導関数は 2 です。
定数項の場合、1 には 0 の導関数があります。
したがって、微分多項式は次のようになります。
k(x) = 12x2 + 6x + 2
Matlab では、k の結果は次のようになります:[12 6 2]
例 2:多項式の導関数を求める別の例
次の多項式を検討してください
p(x) = 5x4 + 2x3 + 7x2 - 3x + 8
この多項式は、MATLAB の係数のベクトルで表すことができます -
p = [5 -2 7 -3 8]
この多項式の導関数を求めるには、MATLAB の関数 Polyder を使用します。
k = polyder(p)
このコマンドは、多項式 p の導関数の係数を返します。
matlab コマンド ウィンドウでコードを実行すると、出力は次のようになります:
>> p = [5 -2 7 -3 8]; k = polyder(p) k = 20 -6 14 -3 >>
ベクトル k =[20 -6 14 -3] は多項式を表します
k(x) = 20x3 - 6x2 + 14x - 3
例 3:Polyder(a, b) を使用した 2 つの多項式の積の微分
2 つの多項式を考えてみましょう
a(x) = 2x2 + 3x + 1 b(x) = 4x + 5
これらの多項式は、MATLAB では係数のベクトルで表すことができます。
a = [2 3 1] b = [4 5]
これら 2 つの多項式の積の導関数を計算するには、2 つの入力引数を持つ関数 Polyder を使用します。
k = polyder(a, b);
これにより、a(x) と b(x) の積の導関数の係数が返されます。
matlab コマンド ウィンドウでコードを実行すると、次の出力が得られます:
>> a = [2 3 1]; b = [4 5]; k = polyder(a, b) k = 24 44 19 >>
したがって、微分多項式は次のようになります:k(x) =24x2 + 44x + 19
例 4:指定された 2 つの多項式の導関数
2 つの異なる多項式を考えてみましょう。
a(x) = 3x3 + 2x2 + x + 4 b(x) = x2 - 5x + 6
これらの多項式は、MATLAB では次の係数ベクトルで表すことができます。
a = [3 2 1 4]; b = [1 -5 6];
これら 2 つの多項式の積の導関数を計算するには、ベクトル a と b を入力として関数 Polyder を使用します。
k = polyder(a, b);
このコマンドは、a(x) と b(x) の積の導関数の係数を返します。
コードが matlab コマンド ウィンドウで実行されると、出力は次のようになります:
>> a = [3 2 1 4]; b = [1 -5 6]; k = polyder(a, b) k = 15 -52 27 22 -14 >>
したがって、微分多項式は -
k(x) = 15x4 - 52x3 + 27x2 + 22x - 14
例 5:[q, d] =Polyder(a, b) を使用した 2 つの多項式の商の導関数
2 つの多項式を考えてみましょう −
a(x) = 4x2 + 3x + 2 b(x) = x2 - 2x + 1
これらの多項式は、Matlab では係数のベクトルで表すことができます。
a = [4 3 2]; b = [1 -2 1];
商 a(x) / b(x) の導関数を計算するには、2 つの出力引数 q と d を指定した Polyder 関数を使用します。
[q,d] = polyder(a,b)
これにより、a(x) / b(x) の導関数の q(x) (分子) と d(x) (分母) という 2 つの多項式が返されます。
コードが matlab コマンド ウィンドウで実行されると、出力は次のようになります:
>> a = [4 3 2]; b = [1 -2 1]; [q,d] = polyder(a,b) q = -11 4 7 d = 1 -4 6 -4 1 >>
MATLAB