如何z=f(x,y)
使用带有完整交叉项的 numpy 中的多项式拟合 2D 表面?
问问题
3811 次
2 回答
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)
您添加的术语越多,数字上的情况就越糟糕。你确定你想要一个多项式插值吗?
还有其他多项式的基,其中值矩阵的条件不是那么糟糕,但我不记得它们叫什么了;不过,任何大学水平的数值分析教科书都会有这种材料。
于 2010-03-30T06:08:15.830 回答
0
您可以使用 和 的组合polyvander2d
,polyval2d
但需要使用来自 的设计矩阵输出自己进行拟合polyvander2d
,可能涉及缩放等。应该可以Polynomial2d
从这些工具构建一个类。
于 2018-08-23T22:17:58.893 回答