在Python中生成Chebyshev和Legendre多项式的Pseudo Vandermonde矩阵
在这篇文章中,我们将在Python中生成Chebyshev和Legendre多项式的x、y、z浮动数组的伪范德蒙矩阵。
示例 1
生成Legendre.legvander3d()函数的伪Vandermonde矩阵
我们使用python的Numpy模块中的legendre.legvander3d()方法来产生Legendre多项式的Vandermonde矩阵,x、y、z为样本点。伪范德蒙德矩阵的度数’deg’和样本点(x, y, z)作为一个结果被返回。x、y和z参数都是具有类似形状的点坐标数组。根据任何元素是否为复数,dtypes将被改为float64或complex128。如果有任何标量存在,那么它将被转换为一维数组。deg’参数是一个以[x deg, y deg, z deg]形式提到的最大度数的列表。
语法: legendre.legvander3d(x, y, z, deg)
参数:
- x,y,z = 这些是相同形状的点坐标的数组。
- deg = 它是形式为[x_deg, y_deg, z_deg]的最大度数列表。
返回:它返回一个范德蒙德矩阵。
# import numpy and legendre libraries
import numpy as np
from numpy.polynomial import legendre
# Create arrays of point coordinates x, y and z
x = np.array([2.4, 1.2])
y = np.array([7.1, 2.7])
z = np.array([3.4, 2.2])
# Assign degrees to x, y and z
deg_of_x = 3
deg_of_y = 1
deg_of_z = 2
# use chebvander3d() function to generate a
# pseudo Vandermonde matrix of the
# Chebyshev polynomial and x, y, z sample points
print(legendre.legvander3d(x, y, z, [deg_of_x, deg_of_y, deg_of_z]))
输出 :
[[1.00000000e+00 3.40000000e+00 1.68400000e+01 7.10000000e+00
2.41400000e+01 1.19564000e+02 2.40000000e+00 8.16000000e+00
4.04160000e+01 1.70400000e+01 5.79360000e+01 2.86953600e+02
8.14000000e+00 2.76760000e+01 1.37077600e+02 5.77940000e+01
1.96499600e+02 9.73250960e+02 3.09600000e+01 1.05264000e+02
5.21366400e+02 2.19816000e+02 7.47374400e+02 3.70170144e+03]
[1.00000000e+00 2.20000000e+00 6.76000000e+00 2.70000000e+00
5.94000000e+00 1.82520000e+01 1.20000000e+00 2.64000000e+00
8.11200000e+00 3.24000000e+00 7.12800000e+00 2.19024000e+01
1.66000000e+00 3.65200000e+00 1.12216000e+01 4.48200000e+00
9.86040000e+00 3.02983200e+01 2.52000000e+00 5.54400000e+00
1.70352000e+01 6.80400000e+00 1.49688000e+01 4.59950400e+01]]
示例 2:
生成Chebyshev.chebvander()函数的Pseudo Vandermonde矩阵。
我们使用python的Numpy模块中的chebyshev.chebvander()函数来构造Chebyshev多项式的伪Vandermonde矩阵,x、y、z为样本点。该函数返回度数为’deg’、样本点为(x, y, z)的伪范德蒙德矩阵。
x、y和z参数都是具有相同形状的点坐标数组。根据任何元素是否为复数,dtypes将被改变为float64或complex128。如果有任何标量存在,那么它将被转换为一维数组。另外,’deg’参数是一个最大度数的列表,格式为[x deg, y deg, z deg]。
语法:chebyshev.chebvander(x, y, z, [deg_of_x, deg_of_y, deg_of_z])
参数:
x,y,z = 这些是同形的点坐标数组。
deg = 它是形式为[x_deg, y_deg, z_deg]的最大度数的列表。
返回:它返回’vander3d’,这是一个ndarray。
# import numpy and chebyshev libraries
import numpy as np
from numpy.polynomial import chebyshev as C
# Create arrays of point coordinates x, y and z
x = [1.2, 2.1]
y = [2.3, 3.2]
z = [3.1, 1.3]
# Assign degrees to x, y and z
deg_of_x = 2
deg_of_y = 1
deg_of_z = 3
# use chebvander3d() function to generate a
# pseudo Vandermonde matrix of the
# Chebyshev polynomial and x, y, z sample points
print(C.chebvander3d(x, y, z, [deg_of_x, deg_of_y, deg_of_z]))
输出 :
[[ 1. 3.1 18.22 109.864 2.3 7.13
41.906 252.6872 1.2 3.72 21.864 131.8368
2.76 8.556 50.2872 303.22464 1.88 5.828
34.2536 206.54432 4.324 13.4044 78.78328 475.051936]
[ 1. 1.3 2.38 4.888 3.2 4.16
7.616 15.6416 2.1 2.73 4.998 10.2648
6.72 8.736 15.9936 32.84736 7.82 10.166
18.6116 38.22416 25.024 32.5312 59.55712 122.317312]]