📜  Python| Numpy np.legvander3d() 方法(1)

📅  最后修改于: 2023-12-03 15:04:20.960000             🧑  作者: Mango

Python | Numpy np.legvander3d() 方法

Numpy np.legvander3d() 方法用于计算 3-D Legendre 多项式。

Legendre 三维多项式 P(n, m, l)(x, y, z) 定义为:

$$ P(m,n,l)(x,y,z) = (-1)^{m+n+l} \frac{(2m+1)(2n+1)(2l+1)}{2^{m+n+l}m!n!l!}P_m(x)P_n(y)P_l(z) $$

其中 P_m(x),P_n(y) 和 P_l(z) 表示分别是 x,y 和 z 的 m,n 和 l 阶 Legendre 多项式。

语法格式

numpy.legvander3d(x, y, z, deg)

参数说明:

  • x, y 和 z 为输入的 1-D 数组,表示多项式的自变量,分别对应于 x,y 和 z
  • deg 表示多项式的最高阶次数,如果为 m,则表示 x 的图像是 m 次的 Legendre 多项式
  • 如果 deg 等于 None,则返回 (max(deg_x, deg_y, deg_z) + 1) 次的多项式,其中 deg_x、deg_y 和 deg_z 是 x、y 和 z 的最高次数
返回值

np.legvander3d() 方法返回一个 numpy.ndarray 类型的多项式数组。

示例代码
import numpy as np

x = np.array([1, 2, 3, 4])
y = np.array([-1, -2, -3])
z = np.array([0.1, 0.2])

poly = np.legvander3d(x, y, z, 2)

print(poly)

输出结果为:

[[[ 1.00000000e+00 -2.00000000e+00  3.00000000e-01]
  [-3.00000000e+00  6.00000000e+00 -9.00000000e-01]
  [ 1.50000000e+00 -3.00000000e+00  4.50000000e-01]]

 [[ 4.00000000e+00 -8.00000000e+00  1.20000000e+00]
  [-6.00000000e+00  1.20000000e+01 -1.80000000e+00]
  [ 2.50000000e+00 -5.00000000e+00  7.50000000e-01]]

 [[ 9.00000000e+00 -1.80000000e+01  2.70000000e+00]
  [-9.00000000e+00  1.80000000e+01 -2.70000000e+00]
  [ 1.12500000e+00 -2.25000000e+00  3.37500000e-01]]

 [[ 1.60000000e+01 -3.20000000e+01  4.80000000e+00]
  [-1.20000000e+01  2.40000000e+01 -3.60000000e+00]
  [ 4.00000000e-01 -8.00000000e-01  1.20000000e-01]]]

这个例子中,x 数组的长度为 4,y 数组的长度为 3,z 数组的长度为 2,因此 poly 数组的维度是 (4, 3, 2, 3),其中最后一个维度的大小是 3,因为我们计算了 2 阶的多项式。