多项式曲面拟合 numpy

发布于 2024-08-26 22:08:06 字数 61 浏览 8 评论 0原文

如何将 2D 曲面 z=f(x,y) 与具有完整交叉项的 numpy 多项式拟合?

How do I fit a 2D surface z=f(x,y) with a polynomial in numpy with full cross terms?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

独闯女儿国 2024-09-02 22:08:06

这本质上是数值病态的,但你可以这样做:

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)

添加的项越多,数值上的情况就越糟糕。您确定要进行多项式插值吗?

还有其他多项式的基,其值矩阵的条件不是那么糟糕,但我不记得它们叫什么了;不过,任何大学水平的数值分析教科书都会有这种材料。

This is inherently numerically ill-conditioned but you could do something like this:

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)

The more terms you add, the worse things get, numerically. Are you sure you want a polynomial interpolant?

There are other bases for polynomials for which the matrix of values is not so badly conditioned but I can't remember what they are called; any college-level numerical analysis textbook would have this material, though.

眸中客 2024-09-02 22:08:06

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

You can use a combination of polyvander2d and polyval2d, but will need to do the fit yourself using the design matrix output from polyvander2d, probably involving scaling and such. It should be possible to build a class Polynomial2d from those tools.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文