使用NumPy在Python中生成Legendre数列的Vandermonde矩阵
在这篇文章中,我们将着眼于使用NumPy在Python中生成Legendre系列的Vandermonde矩阵的方法。
示例:
Array:
[-1 2 -3 4 -5]
结果:
[[ 1. -1. 1. ]
[ 1. 2. 5.5]
[ 1. -3. 13. ]
[ 1. 4. 23.5]
[ 1. -5. 37. ]]
NumPy.legvander()
为了用一个数组生成Legendre多项式的伪Vandermonde矩阵,用户必须在Python Numpy中调用NumPy.legvander()方法。这将返回伪范德蒙矩阵,返回的矩阵的形状是x.shape + (deg + 1,),其中最后一个索引是相应的Legendre多项式的度数。
语法 : np.legvander(x, deg)
参数:
- x :[ array_like ] 点的阵列。根据是否有元素是复数,dtype被转换为float64或complex128。
- deg :[int] 结果矩阵的度数。
返回:返回矩阵的大小,即array.size+(degree+1)。
示例:
在这个例子中,我们首先创建了一个有5个浮点数据类型的数组,然后通过NumPy.legvander()方法,我们在python中生成了一个2度Legendre多项式的Vandermonde矩阵。
import numpy as np
from numpy.polynomial import legendre
gfg_data = np.array([-1,2,-3,4,-5])
# Display Elements of Array
print("Array:\n",gfg_data)
# Display Dimensions of Array
print("\nDimensions:\n",gfg_data.ndim)
# To generate a pseudo Vandermonde
# matrix of the Legendre polynomial
gfg=legendre.legvander(gfg_data, 2)
print("\nResult:\n",gfg_data)
输出:
Array:
[-1 2 -3 4 -5]
Dimensions:
1
Result:
[[ 1. -1. 1. ]
[ 1. 2. 5.5]
[ 1. -3. 13. ]
[ 1. 4. 23.5]
[ 1. -5. 37. ]]
示例:
在这个例子中,我们首先创建了一个包含10个浮点数据类型的数组,然后通过NumPy.legvander()方法,我们在python中生成了一个5度Legendre多项式的Vandermonde矩阵。
import numpy as np
from numpy.polynomial import legendre
gfg_data = np.array([-1, 2, -3, 4, -5, 6, -7, 8, -9, 10])
# Display Elements of Array
print("Array:\n", gfg_data)
# Display Dimensions of Array
print("\nDimensions:\n", gfg_data.ndim)
# To generate a pseudo Vandermonde
# matrix of the Legendre polynomial
gfg_data = legendre.legvander(gfg_data, 5)
print("\nResult:\n", gfg_data)
输出:
Array:
[-1 2 -3 4 -5 6 -7 8 -9 10]
Dimensions:
1
Result:
[[ 1.0000000e+00 -1.0000000e+00 1.0000000e+00 -1.0000000e+00
1.0000000e+00 -1.0000000e+00]
[ 1.0000000e+00 2.0000000e+00 5.5000000e+00 1.7000000e+01
5.5375000e+01 1.8575000e+02]
[ 1.0000000e+00 -3.0000000e+00 1.3000000e+01 -6.3000000e+01
3.2100000e+02 -1.6830000e+03]
[ 1.0000000e+00 4.0000000e+00 2.3500000e+01 1.5400000e+02
1.0603750e+03 7.5115000e+03]
[ 1.0000000e+00 -5.0000000e+00 3.7000000e+01 -3.0500000e+02
2.6410000e+03 -2.3525000e+04]
[ 1.0000000e+00 6.0000000e+00 5.3500000e+01 5.3100000e+02
5.5353750e+03 5.9357250e+04]
[ 1.0000000e+00 -7.0000000e+00 7.3000000e+01 -8.4700000e+02
1.0321000e+04 -1.2936700e+05]
[ 1.0000000e+00 8.0000000e+00 9.5500000e+01 1.2680000e+03
1.7680375e+04 2.5358300e+05]
[ 1.0000000e+00 -9.0000000e+00 1.2100000e+02 -1.8090000e+03
2.8401000e+04 -4.5864900e+05]
[ 1.0000000e+00 1.0000000e+01 1.4950000e+02 2.4850000e+03
4.3375375e+04 7.7876875e+05]]