Python NumPyでルジャンドル多項式の小さな末尾係数を削除する方法(legtrim関数)
PythonのNumPyライブラリには、ルジャンドル多項式から絶対値の小さい末尾係数を取り除くためのlegendre.legtrim()メソッドが用意されています。このメソッドは、末尾の不要な係数(ゼロまたは許容誤差以下の値)を削除した1次元配列を返します。削除後の級数が空になる場合は、ゼロ1つだけを含む級数が返されます。
legtrim()メソッドのパラメータについて
ここでいう「小さい(small)」とは「絶対値が小さい」という意味で、その基準はパラメータtolによって制御されます。また「末尾(trailing)」とは最高次の係数を指します。
例えば、配列[0, 1, 1, 0, 0]は「0 + x + x² + 0・x³ + 0・x⁴」という多項式を表していますが、この場合3次と4次の係数が「トリミング」の対象となります。
- c:係数を格納した1次元配列。低次から高次の順に並べます。
- tol:絶対値がtol以下である末尾の要素は削除されます。
実装手順
まず、必要なライブラリをインポートします。
import numpy as np from numpy.polynomial import legendre as L
numpy.array()メソッドを使って、係数の1次元配列を作成します。
c = np.array([0,5,0, 0,9,0])
作成した配列を表示します。
print("Our 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)
ルジャンドル多項式から小さな末尾係数を削除するには、legendre.legtrim()メソッドを使用します。
print("\nResult...\n",L.legtrim(c))
サンプルコード
import numpy as np
from numpy.polynomial import legendre as L
# numpy.array()メソッドで係数の1次元配列を作成
c = np.array([0,5,0, 0,9,0])
# 配列を表示
print("Our 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)
# legendre.legtrim()メソッドで小さな末尾係数を削除
print("\nResult...\n",L.legtrim(c))
実行結果
Our Array...
[0 5 0 0 9 0]
Dimensions of our Array...
1
Datatype of our Array object...
int64
Shape of our Array object...
(6,)
Result...
[0. 5. 0. 0. 9.]
出力結果を見ると、入力配列[0, 5, 0, 0, 9, 0]の末尾にあるゼロが削除され、[0. 5. 0. 0. 9.]という結果が得られていることがわかります。このようにlegtrim()を使うことで、多項式の表現を簡潔に整理できます。
-
Python NumPyのpolyder()で特定の軸に沿って多項式を微分する方法
PythonのNumPyでは、polynomial.polyder()メソッドを使うことで多項式を微分できます。このメソッドは、指定した軸(axis)に沿って多項式の係数cをm回微分した結果を返します。各反復処理のたびに、結果はscl(スケーリング係数)と掛け合わされます。このスケーリング係数は、変数の線形変換を行う際に使用されます。polyder()メソッドの引数について係数配列cは、各軸に沿って次数の低いものから高いものへと並べられます。例えば、[1,2,3]は「1 + 2*x + 3*x**2」という多項式を表し、[[1,2],[1,2]]はaxis=0がx、axis=1がyである場合、
-
Pythonでソート済み配列から重複要素を削除する方法
ここでは、ソート済みのリストから重複する要素をすべて削除し、その後の配列の長さ(ユニークな要素の個数)を返す問題を扱います。重要な制約として、O(1)の追加メモリで実行する必要があります。つまり、新しい配列を作成せずに、元の配列をインプレース(in-place)で操作しなければなりません。問題の例例えば、次のような入力が与えられたとします。A = [1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 5, 5, 5, 6]この場合、重複を除いたユニークな要素は「1, 2, 3, 4, 5, 6」の6つなので、出力は 6 となります。解法のアプローチこの問題は、以下の手順で解くことができ