numpy.polynomial.polynomial.polyvander2d#

polynomial.polynomial.polyvander2d(x, y, deg)[原始碼]#

給定次數的偽范德蒙矩陣。

傳回給定次數 deg 和取樣點 (x, y) 的偽范德蒙矩陣。偽范德蒙矩陣定義為

\[V[..., (deg[1] + 1)*i + j] = x^i * y^j,\]

其中 0 <= i <= deg[0]0 <= j <= deg[1]V 的前導索引為點 (x, y) 的索引,而最後一個索引則編碼 xy 的次方。

如果 V = polyvander2d(x, y, [xdeg, ydeg]),則 V 的各列對應於形狀為 (xdeg + 1, ydeg + 1) 的 2-D 係數陣列 c 中的元素,順序如下

\[c_{00}, c_{01}, c_{02} ... , c_{10}, c_{11}, c_{12} ...\]

np.dot(V, c.flat)polyval2d(x, y, c) 在捨入誤差範圍內會相同。此等價性對於最小平方法擬合以及評估大量具有相同次數和取樣點的 2-D 多項式都很有用。

參數:
x, yarray_like

點座標的陣列,全部都具有相同的形狀。dtype 將轉換為 float64 或 complex128,取決於是否有任何元素是複數。純量會轉換為 1-D 陣列。

deg整數列表

最大次數的列表,形式為 [x_deg, y_deg]。

傳回值:
vander2dndarray

傳回矩陣的形狀為 x.shape + (order,),其中 \(order = (deg[0]+1)*(deg([1]+1)\)。dtype 將與轉換後的 xy 相同。

範例

>>> import numpy as np

次數為 [1, 2] 且取樣點為 x = [-1, 2]y = [1, 3] 的 2-D 偽范德蒙矩陣如下

>>> from numpy.polynomial import polynomial as P
>>> x = np.array([-1, 2])
>>> y = np.array([1, 3])
>>> m, n = 1, 2
>>> deg = np.array([m, n])
>>> V = P.polyvander2d(x=x, y=y, deg=deg)
>>> V
array([[ 1.,  1.,  1., -1., -1., -1.],
       [ 1.,  3.,  9.,  2.,  6., 18.]])

我們可以驗證任何 0 <= i <= m0 <= j <= n 的列

>>> i, j = 0, 1
>>> V[:, (deg[1]+1)*i + j] == x**i * y**j
array([ True,  True])

取樣點 x 和次數 m 的 (1D) 范德蒙矩陣是 (2D) 偽范德蒙矩陣的特例,其中 y 點全部為零且次數為 [m, 0]

>>> P.polyvander2d(x=x, y=0*x, deg=(m, 0)) == P.polyvander(x=x, deg=m)
array([[ True,  True],
       [ True,  True]])