У меня проблемы с моделированием некоторых данных в python.Я хочу улучшить очень грубый метод, который я в настоящее время использую:
x = np.linspace(-1, 1, 130)
y = np.linspace(0, 0.5, 113)
data = np.random.rand(130, 113)
X, Y = np.meshgrid(x,y)
X1 = X.flatten()
Y1 = Y.flatten()
Z1 = data.flatten()
С этими данными я пытаюсь соответствовать модели:
A2 = np.array([X1**3, Y1**3, (X1**2)*Y1, (Y1**2)*X1,
X1**2, Y1**2, X1*Y1, X1, Y1, X1*0+1]).T
c2, r2, rank2, s2 = np.linalg.lstsq(A2, Z1)
tst_z2 = c2[0]*(X**3) + c2[1]*(Y**3) + c2[2]*((X**2)*Y)
+ c2[3]*((Y**2)*X) + c2[4]*(X**2) + c2[5]*(Y**2) + c2[6]*(X*Y)
+ c2[7]*X + c2[8]*Y + c2[9]*X*0+1
Модель, которую я использую, являетсястандартный двумерный кубический полином, где я набрал все необходимые термины.Если я хочу использовать многочлены четвертого порядка или более высокого порядка и перейти к данным, имеющим три или более независимых переменных, этот метод быстро станет непригодным для использования.
Есть ли способ упорядочить / обобщить этот метод без необходимостивыписать все термины, чтобы я мог перейти к полиномам более высокого порядка?
Чтобы немного больше понять проблему, я пытаюсь создать модель, которая соответствует этим данным :
Поверхность красно-оранжевого цвета - моя попытка использовать двумерный кубический полином для подгонки данных.Если кто-то знает, как лучше это сделать, я был бы очень признателен за помощь.