如何在具有完整交叉项的numpy中使用多项式拟合2D曲面z=f(x,y)
?
答案 0 :(得分:7)
这本质上是数字疾病,但你可以做这样的事情:
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)
您添加的字词越多,数字化程度就越差。你确定要多项式插值吗?
对于多项式还有其他基础,其值的矩阵没有那么严格的条件,但我不记得它们被称为什么;但是,任何大学水平的数值分析教科书都会有这种材料。
答案 1 :(得分:0)
您可以结合使用polyvander2d
和polyval2d
,但需要使用polyvander2d
的设计矩阵输出来自己进行拟合,可能涉及缩放等。应该可以从那些工具构建一个类Polynomial2d
。