Python NumPyのlagvander3d()でラゲール多項式の疑似ファンデルモンド行列を生成する方法(複素数のx、y、zサンプル点)
PythonのNumPyを使用して、複素数のサンプル点 x、y、z からラゲール多項式の疑似ファンデルモンド行列を生成するには、numpy.polynomial.laguerre.lagvander3d() 関数を利用します。
この関数の主なパラメータは以下の通りです。
- x, y, z:点の座標を格納した配列。いずれも同じ形状である必要があります。要素がスカラーの場合は1次元配列に変換されます。
- deg:[x_deg, y_deg, z_deg] の形式で各次元の最大次数を指定するリスト。
また、入力配列のdtypeは、要素に複素数が含まれる場合は complex128 に、含まれない場合は float64 に自動的に変換されます。
実装手順
まず、必要なライブラリをインポートします。
import numpy as np from numpy.polynomial import laguerre as L
numpy.array() メソッドを使って、すべて同じ形状の点座標の配列を作成します。ここでは複素数のサンプル点を使用します。
x = np.array([-2.+2.j, -1.+2.j]) y = np.array([0.+2.j, 1.+2.j]) z = np.array([2.+2.j, 3.+3.j])
作成した配列を表示して確認します。
print("Array1...\n", x)
print("\nArray2...\n", y)
print("\nArray3...\n", z)
各配列のデータ型(dtype)を確認します。
print("\nArray1 datatype...\n", x.dtype)
print("\nArray2 datatype...\n", y.dtype)
print("\nArray3 datatype...\n", z.dtype)
続いて、各配列の次元数(ndim)をチェックします。
print("\nDimensions of Array1...\n", x.ndim)
print("\nDimensions of Array2...\n", y.ndim)
print("\nDimensions of Array3...\n", z.ndim)
さらに、各配列の形状(shape)も確認しておきましょう。
print("\nShape of Array1...\n", x.shape)
print("\nShape of Array2...\n", y.shape)
print("\nShape of Array3...\n", z.shape)
最後に、laguerre.lagvander3d() を呼び出して、ラゲール多項式の疑似ファンデルモンド行列を生成します。ここでは x、y、z の最大次数をそれぞれ 2、3、4 に設定しています。
x_deg, y_deg, z_deg = 2, 3, 4
print("\nResult...\n", L.lagvander3d(x, y, z, [x_deg, y_deg, z_deg]))
完全なコード例
import numpy as np
from numpy.polynomial import laguerre as L
# numpy.array() メソッドで同じ形状の点座標配列を作成
x = np.array([-2.+2.j, -1.+2.j])
y = np.array([0.+2.j, 1.+2.j])
z = np.array([2.+2.j, 3.+3.j])
# 配列を表示
print("Array1...\n", x)
print("\nArray2...\n", y)
print("\nArray3...\n", z)
# データ型を表示
print("\nArray1 datatype...\n", x.dtype)
print("\nArray2 datatype...\n", y.dtype)
print("\nArray3 datatype...\n", z.dtype)
# 次元数を確認
print("\nDimensions of Array1...\n", x.ndim)
print("\nDimensions of Array2...\n", y.ndim)
print("\nDimensions of Array3...\n", z.ndim)
# 形状を確認
print("\nShape of Array1...\n", x.shape)
print("\nShape of Array2...\n", y.shape)
print("\nShape of Array3...\n", z.shape)
# lagvander3d() でラゲール多項式の疑似ファンデルモンド行列を生成
x_deg, y_deg, z_deg = 2, 3, 4
print("\nResult...\n", L.lagvander3d(x, y, z, [x_deg, y_deg, z_deg]))
実行結果
Array1...
[-2.+2.j -1.+2.j]
Array2...
[0.+2.j 1.+2.j]
Array3...
[2.+2.j 3.+3.j]
Array1 datatype...
complex128
Array2 datatype...
complex128
Array3 datatype...
complex128
Dimensions of Array1...
1
Dimensions of Array2...
1
Dimensions of Array3...
1
Shape of Array1...
(2,)
Shape of Array2...
(2,)
Shape of Array3...
(2,)
Result...
[[ 1. +0.j -1. -2.j
-3. +0.j -2.33333333 +3.33333333j
1. +5.33333333j 1. -2.j
-5. +0.j -3. +6.j
4.33333333 +8.j 11.66666667 +3.33333333j
-1. -4.j -7. +6.j
3. +12.j 15.66666667 +6.j
20.33333333 -9.33333333j -5. -4.66666667j
-4.33333333 +14.66666667j 15. +14.j
27.22222222 -5.77777778j 19.88888889 -31.33333333j
3. -2.j -7. -4.j
-9. +6.j -0.33333333 +14.66666667j
13.66666667 +14.j -1. -8.j
-15. +10.j 3. +24.j
29. +15.33333333j 41.66666667 -13.33333333j
-11. -10.j -9. +32.j
33. +30.j 59. -13.33333333j
42.33333333 -68.66666667j -24.33333333 -4.j
16.33333333 +52.66666667j 73. +12.j
70.11111111 -71.77777778j -3. -133.77777778j
5. -8.j -21. -2.j
-15. +24.j 15. +35.33333333j
47.66666667 +18.66666667j -11. -18.j
-25. +40.j 33. +54.j
85.66666667 +5.33333333j 85. -76.66666667j
-37. -12.j 13. +86.j
111. +36.j 126.33333333 -95.33333333j
27. -209.33333333j -62.33333333 +16.66666667j
95.66666667 +108.j 187. -50.j
89.88888889 -246.66666667j -151.22222222 -315.77777778j]
[ 1. +0.j -2. -3.j
-5. +3.j 1. +9.j
11.5 +6.j 0. -2.j
-6. +4.j 6. +10.j
18. -2.j 12. -23.j
-2.5 -2.j -1. +11.5j
18.5 +2.5j 15.5 -24.5j
-16.75 -38.j -4.66666667 +0.33333333j
10.33333333 +13.33333333j 22.33333333 -15.66666667j
-7.66666667 -41.66666667j -55.66666667 -24.16666667j
2. -2.j -10. -2.j
-4. +16.j 20. +16.j
35. -11.j -4. -4.j
-4. +20.j 32. +8.j
32. -40.j -22. -70.j
-9. +1.j 21. +25.j
42. -32.j -18. -80.j
-109.5 -42.5j -8.66666667 +10.j
47.33333333 +6.j 13.33333333 -76.j
-98.66666667 -68.j -159.66666667 +63.j
1.5 -6.j -21. +7.5j
10.5 +34.5j 55.5 +7.5j
53.25 -60.j -12. -3.j
15. +42.j 69. -21.j
15. -111.j -120. -106.5j
-15.75 +12.j 67.5 +23.25j
42.75 -107.25j -123.75 -129.75j
-253.125 +43.5j -5. +28.5j
95.5 -42.j -60.5 -157.5j
-261.5 -16.5j -228.5 +297.75j ]]
-
Pythonでチェビシェフ多項式とx、y、zサンプル点から疑似ファンデルモンド行列を生成する方法
PythonのNumPyライブラリでは、numpy.polynomial.chebyshevモジュールのchebvander3d()関数を使うことで、チェビシェフ多項式とx、y、zのサンプル点から疑似ファンデルモンド行列を簡単に生成できます。このメソッドは、指定された次数degとサンプル点(x, y, z)に対応する疑似ファンデルモンド行列を返します。パラメータのx、y、zは点の座標を表す配列で、すべて同じ形状である必要があります。データ型は、要素に複素数が含まれるかどうかに応じてfloat64またはcomplex128へ自動的に変換されます。また、スカラー値は1次元配列として扱われます。パラ
-
Pythonでエルミート多項式とx・y・zの複素数サンプル点から疑似ファンデルモンド行列を生成する方法
エルミート多項式とx、y、zのサンプル点から疑似ファンデルモンド行列を生成するには、PythonのNumPyが提供するhermite.hermvander3d()関数を使用します。このメソッドは、計算結果として疑似ファンデルモンド行列を返します。主なパラメータは以下の通りです。x、y、z: 点座標の配列。すべて同じ形状である必要があります。dtypeは、要素に複素数が含まれるかどうかに応じてfloat64またはcomplex128へ自動的に変換され、スカラーを渡した場合は1次元配列に変換されます。deg: [x_deg, y_deg, z_deg] の形式で指定する、各軸の最大次数のリスト。な