Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python NumPyのpolyder()で多項式を微分し、各微分にスカラー倍を適用する方法

PythonのNumPyライブラリでは、多項式を微分するために polynomial.polyder() メソッドを使用します。このメソッドは、多項式の係数配列 c を指定した軸に沿って m 回微分した結果を返します。さらに、各微分のたびに結果へスケール係数 scl が掛けられます(このスケーリングは、変数の線形変換を行う際に役立ちます)。

polyder()メソッドの引数について

引数 c は多項式の係数を格納した配列で、次数の低い項から高い項へと順に並べます。例えば、[1,2,3] は多項式 1 + 2x + 3x² を表し、2次元配列の場合は [[1,2],[1,2]] が axis=0 を x、axis=1 を y としたとき 1 + 1x + 2y + 2xy を表します。

主なパラメータは以下の通りです。

  • c(第1引数): 多項式の係数配列。多次元配列の場合、各軸が異なる変数に対応し、各軸の次数は対応するインデックスで決まります。
  • m(第2引数): 微分の回数。非負の整数である必要があります(デフォルト: 1)。
  • scl(第3引数): 各微分ごとに掛けられるスケール係数。最終的な結果には scl**m が掛けられます。変数の線形変換に使用します(デフォルト: 1)。
  • axis(第4引数): 微分を行う軸(デフォルト: 0)。

例えば scl = -1 を指定して係数配列 [1, 2, 3, 4] を微分すると、結果は (d/d(-x))(c) = -2 - 6x - 12x² となります。

実装手順

まず、必要なライブラリをインポートします。

import numpy as np
from numpy.polynomial import polynomial as P

次に、多項式 1 + 2x + 3x² + 4x³ の係数配列を作成します。

c = np.array([1,2,3,4])

作成した係数配列を表示します。

print("Our coefficient Array...\n",c)

配列の次元数を確認します。

print("\nDimensions of our Array...\n",c.ndim)

配列のデータ型を取得します。

print("\nDatatype of our Array object...\n",c.dtype)

配列の形状を確認します。

print("\nShape of our Array object...\n",c.shape)

多項式を微分するには、NumPyの polynomial.polyder() メソッドを使用します。ここでは scl = -1 を指定しています。

print("\nResult...\n",P.polyder(c, scl = -1))

サンプルコード全体

import numpy as np
from numpy.polynomial import polynomial as P

# 多項式 1 + 2x + 3x**2 + 4x**3 の係数配列を作成
c = np.array([1,2,3,4])

# 係数配列を表示
print("Our coefficient Array...\n",c)

# 次元数を確認
print("\nDimensions of our Array...\n",c.ndim)

# データ型を取得
print("\nDatatype of our Array object...\n",c.dtype)

# 形状を確認
print("\nShape of our Array object...\n",c.shape)

# polyder()メソッドで多項式を微分(scl=-1を指定)
print("\nResult...\n",P.polyder(c, scl = -1))

実行結果

Our coefficient Array...
    [1 2 3 4]

Dimensions of our Array...
1

Datatype of our Array object...
int64

Shape of our Array object...
(4,)

Result...
    [ -2. -6. -12.]

このように、元の多項式 1 + 2x + 3x² + 4x³ を通常どおり微分すると 2 + 6x + 12x² になりますが、scl = -1 を指定することで各係数に -1 が掛かり、結果として -2 - 6x - 12x² が得られます。これは d/d(-x) の計算、つまり変数 x を -x で置き換えた場合の微分に相当します。

  1. 【Python】polyint()で多項式を積分し、スカラー倍してから積分定数を追加する方法

    はじめにPythonで多項式を積分するには、NumPyの polynomial.polyint() メソッドを使用します。このメソッドは、係数配列 c を下限 lbnd から軸 axis に沿って m 回積分した結果の多項式係数を返します。各反復処理のたびに、得られた級数は scl 倍され、その後に積分定数 k が加算されます。このスケーリング係数は、変数の線形変換を行う際に活用されます。引数 c は、低次から高次の順に並んだ係数の配列です。例えば、[1,2,3] は多項式 1 + 2x + 3x² を表し、[[1,2],[1,2]] は axis=0 を x、axis=1 を y とした場合

  2. Pythonで配列とスカラーの内積を計算する方法|numpy.inner()の使い方

    Pythonで配列とスカラーの内積を求めるには、NumPyのnumpy.inner()メソッドを使用します。この関数は、1次元配列に対しては通常のベクトル内積を計算し、多次元配列の場合は最後の軸に沿った要素ごとの積の総和を返します。引数には2つの配列(またはベクトル)aとbを指定します。なお、aとbがスカラーでない場合は、両者の最後の次元が一致している必要があります。実行手順まず、必要なライブラリをインポートします。import numpy as npnumpy.eye()メソッドを使って配列を作成します。このメソッドは、対角成分が1、それ以外が0の2次元配列(単位行列)を返します。arr =