【发布时间】:2010-03-29 07:03:08
【问题描述】:
如何将 2D 曲面 z=f(x,y) 与带有完整交叉项的 numpy 中的多项式拟合?
【问题讨论】:
标签: numpy polynomial-math
如何将 2D 曲面 z=f(x,y) 与带有完整交叉项的 numpy 中的多项式拟合?
【问题讨论】:
标签: numpy polynomial-math
这本质上是数字病态的,但你可以这样做:
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)
您添加的术语越多,数字上的情况就越糟糕。你确定你想要一个多项式插值吗?
还有其他多项式的基,其值矩阵的条件不是那么糟糕,但我不记得它们叫什么了;不过,任何大学水平的数值分析教科书都会有这种材料。
【讨论】:
您可以使用polyvander2d 和polyval2d 的组合,但需要使用polyvander2d 的设计矩阵输出自己进行拟合,可能涉及缩放等。应该可以使用这些工具构建一个类Polynomial2d。
【讨论】: