numpy的polyvander3d如何工作?

时间:2017-05-19 00:10:10

标签: python numpy matrix polynomial-math

这里是参考 https://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.polynomial.polynomial.polyvander3d.html

我不确定如何解码此函数的返回值

所以我想拥有的基本上是2度的xyz多项式:

polynomial 我似乎无法弄清楚如何解码这个例子:

(x,y,z)=(3,3,3),度数为[2,2,2]

>>>polyvander3d(3, 3, 3, [2, 2, 2] )
    array([[  1.,    3.,    9.,    3.,    9.,   27.,    9.,   27.,   81.,
              3.,    9.,   27.,    9.,   27.,   81.,   27.,   81.,  243.,
              9.,   27.,   81.,   27.,   81.,  243.,   81.,  243.,  729.]])

此外,文档说:

  

V的前导索引指向点(x,y,z)和最后一个索引编码x,y和z的幂。

我不知道他们的意思。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

polyvander3d(x, y, z, [x_deg, y_deg, z_deg])返回一个矩阵,其中每列的形状为((x_deg+1)*(y_deg+1)*(z_deg+1), ),并按c000, c001, c002, ..., c010, c011...

的顺序包含所有三维多项式系数

因此,使用您的示例,返回矩阵的第一列包含(V[0])包含所有3d多项式系数:

>>>V = polyvander3d(3, 3, 3, [2, 2, 2])
>>>V
array([[  1.,    3.,    9.,    3.,    9.,   27.,    9.,   27.,   81.,
          3.,    9.,   27.,    9.,   27.,   81.,   27.,   81.,  243.,
          9.,   27.,   81.,   27.,   81.,  243.,   81.,  243.,  729.]])

如:

V[0][0] = (3^0 + 3^0 + 3^0) = 1
V[0][1] = (3^0 + 3^0 + 3^1) = 3
V[0][2] = (3^0 + 3^0 + 3^2) = 9
V[0][3] = (3^0 + 3^1 + 3^0) = 3
V[0][4] = (3^0 + 3^1 + 3^1) = 9

等等,直到

V[0][(x_deg+1)*(y_deg+1)*(z_deg+1) - 1] = V[0][26] = (3^2 + 3^2 + 3^2) = 729

Here's the most current link to the documentation(问题中的那个导致numpy v1.10)。