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) и последний индекс кодирует степени x и y.

Если V = polyvander2d(x, y, [xdeg, ydeg]), тогда столбцы V соответствуют элементам 2-D массива коэффициентов c формы (xdeg + 1, ydeg + 1) в порядке

\[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

Массивы координат точек, все одинаковой формы. Типы данных будут преобразованы в float64 или complex128 в зависимости от того, являются ли какие-либо элементы комплексными. Скаляры преобразуются в одномерные массивы.

degсписок целых чисел

Список максимальных степеней вида [x_deg, y_deg].

Возвращает:
vander2dndarray

Форма возвращаемой матрицы равна x.shape + (order,), где \(order = (deg[0]+1)*(deg([1]+1)\). Тип данных будет таким же, как у преобразованного x и y.

Смотрите также

polyvander, polyvander3d, polyval2d, polyval3d

Примеры

>>> import numpy as np

2-D псевдо-матрица Вандермонда степени [1, 2] и точки выборки x = [-1, 2] и y = [1, 3] следующий:

>>> 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 <= m и 0 <= j <= n:

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

(1D) матрица Вандермонда точек выборки x и степень m является частным случаем (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]])