Spec-Zone.ru › NumPy 2.0

numpy.polynomial.polynomial.polyvander2d

polynomial.polynomial.polyvander2d(x, y, deg)[source]

Матрица псевдо-Вандермонда заданных степеней.

Возвращает матрицу псевдо-Вандермонда заданных степеней 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 соответствуют элементам двумерного массива коэффициентов 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) будут одинаковыми с точностью до округления. Это эквивалентность полезна как для подгонки методом наименьших квадратов, так и для вычисления большого числа двумерных полиномов одинаковых степеней и точек отсчёта.

Parameters:
x, yarray_like

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

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

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

Returns:
vander2dndarray

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

См. также

polyvander, polyvander3d, polyval2d, polyval3d

Примеры

Матрица псевдо-Вандермонда 2-го порядка степени [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]])

© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.polynomial.polynomial.polyvander2d.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API