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

Python NumPyのpolyvander3d()で複素数座標(x, y, z)から疑似ファンデルモンド行列を生成する方法

指定された次数とサンプル点 (x, y, z) からファンデルモンド行列を生成するには、Python NumPy の polynomial.polyvander3d() 関数を使用します。このメソッドは、指定した次数 deg とサンプル点 (x, y, z) に対応する疑似ファンデルモンド行列を返します。

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

  • x, y, z: 点の座標を表す配列です。3つの配列はすべて同じ形状である必要があります。データ型(dtype)は、要素に複素数が含まれる場合は complex128、含まれない場合は float64 に自動的に変換されます。スカラー値を渡した場合は 1 次元配列に変換されます。
  • deg: [x_deg, y_deg, z_deg] の形式で各軸の最大次数を指定するリストです。

実行手順

1. 必要なライブラリをインポートする

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

import numpy as np
from numpy.polynomial.polynomial import polyvander3d

2. 座標の配列を作成する

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])

3. 配列の内容を表示する

print("Array1...\n",x)
print("\nArray2...\n",y)
print("\nArray3...\n",z)

4. データ型を確認する

print("\nArray1 datatype...\n",x.dtype)
print("\nArray2 datatype...\n",y.dtype)
print("\nArray3 datatype...\n",z.dtype)

5. 次元を確認する

print("\nDimensions of Array1...\n",x.ndim)
print("\nDimensions of Array2...\n",y.ndim)
print("\nDimensions of Array3...\n",z.ndim)

6. 形状を確認する

print("\nShape of Array1...\n",x.shape)
print("\nShape of Array2...\n",y.shape)
print("\nShape of Array3...\n",z.shape)

7. 疑似ファンデルモンド行列を生成する

polyvander3d() を使って、指定した次数とサンプル点 (x, y, z) から疑似ファンデルモンド行列を生成します。

x_deg, y_deg, z_deg = 2, 3, 4
print("\nResult...\n",polyvander3d(x,y, z, [x_deg, y_deg, z_deg]))

完全なコード例

import numpy as np
from numpy.polynomial.polynomial import polyvander3d

# 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)

# polyvander3d() で指定した次数とサンプル点 (x, y, z) の
# 疑似ファンデルモンド行列を生成
x_deg, y_deg, z_deg = 2, 3, 4
print("\nResult...\n",polyvander3d(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.000e+00+0.000e+00j 2.000e+00+2.000e+00j 0.000e+00+8.000e+00j
  -1.600e+01+1.600e+01j -6.400e+01+0.000e+00j 0.000e+00+2.000e+00j
  -4.000e+00+4.000e+00j -1.600e+01+0.000e+00j -3.200e+01-3.200e+01j
  -0.000e+00-1.280e+02j -4.000e+00+0.000e+00j -8.000e+00-8.000e+00j
  -0.000e+00-3.200e+01j 6.400e+01-6.400e+01j 2.560e+02-0.000e+00j
   0.000e+00-8.000e+00j 1.600e+01-1.600e+01j 6.400e+01+0.000e+00j
   1.280e+02+1.280e+02j 0.000e+00+5.120e+02j -2.000e+00+2.000e+00j
  -8.000e+00+0.000e+00j -1.600e+01-1.600e+01j 0.000e+00-6.400e+01j
   1.280e+02-1.280e+02j -4.000e+00-4.000e+00j 0.000e+00-1.600e+01j
   3.200e+01-3.200e+01j 1.280e+02+0.000e+00j 2.560e+02+2.560e+02j
   8.000e+00-8.000e+00j 3.200e+01+0.000e+00j 6.400e+01+6.400e+01j
   0.000e+00+2.560e+02j -5.120e+02+5.120e+02j 1.600e+01+1.600e+01j
   0.000e+00+6.400e+01j -1.280e+02+1.280e+02j -5.120e+02+0.000e+00j
  -1.024e+03-1.024e+03j 0.000e+00-8.000e+00j 1.600e+01-1.600e+01j
   6.400e+01+0.000e+00j 1.280e+02+1.280e+02j 0.000e+00+5.120e+02j
   1.600e+01+0.000e+00j 3.200e+01+3.200e+01j 0.000e+00+1.280e+02j
  -2.560e+02+2.560e+02j -1.024e+03+0.000e+00j 0.000e+00+3.200e+01j
  -6.400e+01+6.400e+01j -2.560e+02+0.000e+00j -5.120e+02-5.120e+02j
  -0.000e+00-2.048e+03j -6.400e+01+0.000e+00j -1.280e+02-1.280e+02j
  -0.000e+00-5.120e+02j 1.024e+03-1.024e+03j 4.096e+03-0.000e+00j]
 [ 1.000e+00+0.000e+00j 3.000e+00+3.000e+00j 0.000e+00+1.800e+01j
  -5.400e+01+5.400e+01j -3.240e+02+0.000e+00j 1.000e+00+2.000e+00j
  -3.000e+00+9.000e+00j -3.600e+01+1.800e+01j -1.620e+02-5.400e+01j
  -3.240e+02-6.480e+02j -3.000e+00+4.000e+00j -2.100e+01+3.000e+00j
  -7.200e+01-5.400e+01j -5.400e+01-3.780e+02j 9.720e+02-1.296e+03j
  -1.100e+11-2.000e+00j -2.700e+01-3.900e+01j 3.600e+01-1.980e+02j
   7.020e+02-4.860e+02j 3.564e+03+6.480e+02j -1.000e+00+2.000e+00j
  -9.000e+00+3.000e+00j -3.600e+01-1.800e+01j -5.400e+01-1.620e+02j
   3.240e+02-6.480e+02j -5.000e+00+0.000e+00j -1.500e+01-1.500e+01j
  -0.000e+00-9.000e+01j 2.700e+02-2.700e+02j 1.620e+03-0.000e+00j
  -5.000e+00-1.000e+01j 1.500e+01-4.500e+01j 1.800e+02-9.000e+01j
   8.100e+02+2.700e+02j 1.620e+03+3.240e+03j 1.500e+01-2.000e+01j
   1.050e+02-1.500e+01j 3.600e+02+2.700e+02j 2.700e+02+1.890e+03j
  -4.860e+03+6.480e+03j -3.000e+00-4.000e+00j 3.000e+00-2.100e+01j
   7.200e+01-5.400e+01j 3.780e+02+5.400e+01j 9.720e+02+1.296e+03j
   5.000e+00-1.000e+01j 4.500e+01-1.500e+01j 1.800e+02+9.000e+01j
   2.700e+02+8.100e+02j -1.620e+03+3.240e+03j 2.500e+01+0.000e+00j
   7.500e+01+7.500e+01j 0.000e+00+4.500e+02j -1.350e+03+1.350e+03j
  -8.100e+03+0.000e+00j 2.500e+01+5.000e+01j -7.500e+01+2.250e+02j
  -9.000e+02+4.500e+02j -4.050e+03-1.350e+03j -8.100e+03-1.620e+04j]]

  1. Pythonでチェビシェフ多項式とx、y、zサンプル点から疑似ファンデルモンド行列を生成する方法

    PythonのNumPyライブラリでは、numpy.polynomial.chebyshevモジュールのchebvander3d()関数を使うことで、チェビシェフ多項式とx、y、zのサンプル点から疑似ファンデルモンド行列を簡単に生成できます。このメソッドは、指定された次数degとサンプル点(x, y, z)に対応する疑似ファンデルモンド行列を返します。パラメータのx、y、zは点の座標を表す配列で、すべて同じ形状である必要があります。データ型は、要素に複素数が含まれるかどうかに応じてfloat64またはcomplex128へ自動的に変換されます。また、スカラー値は1次元配列として扱われます。パラ

  2. 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] の形式で指定する、各軸の最大次数のリスト。な