1

如何z=f(x,y)使用带有完整交叉项的 numpy 中的多项式拟合 2D 表面?

4

2 回答 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

您可以使用 和 的组合polyvander2dpolyval2d但需要使用来自 的设计矩阵输出自己进行拟合polyvander2d,可能涉及缩放等。应该可以Polynomial2d从这些工具构建一个类。

于 2018-08-23T22:17:58.893 回答