在Python中生成Chebyshev和Legendre多项式的Pseudo Vandermonde矩阵

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Numpy 多项式