полиномиальная поверхность подходит numpy

Как мне подобрать 2D-поверхность z=f(x,y) с полиномом в numpy с полными перекрестными терминами?


person Wolfgang Kerzendorf    schedule 29.03.2010    source источник


Ответы (2)


Это по своей сути численно плохо обусловлено, но вы можете сделать что-то вроде этого:

import numpy as np

x = np.random.randn(500)
y = np.random.randn(500)
z = np.random.randn(500) # Dependent variable

v = np.array([np.ones(500), x, y, x**2, x * y, y**2])

coefficients, residues, rank, singval = np.linalg.lstsq(v.T, z)

Чем больше терминов вы добавляете, тем хуже становится численно. Вы уверены, что вам нужен полиномиальный интерполант?

Есть и другие основания для полиномов, для которых матрица значений не так плохо обусловлена, но я не помню, как они называются; однако любой учебник по численному анализу для колледжа должен иметь этот материал.

person dwf    schedule 30.03.2010

Вы можете использовать комбинацию polyvander2d и polyval2d, но вам нужно будет выполнить подгонку самостоятельно, используя выходные данные матрицы проектирования из polyvander2d, возможно, включая масштабирование и тому подобное. Должна быть возможность построить класс Polynomial2d из этих инструментов.

person Charles Harris    schedule 23.08.2018