2009-05-28 112 views
1

这也与数学有关。但是这对计算也很有用。生成给定的一组坐标所在的平面/曲面的函数

可以说你有10个坐标。 (x1,y1)(x2,y2).....在2D空间中。 (即在X-Y平面上)。我们能否找到穿过每个坐标的单一光滑曲线。

在扩展问题的同时,如果空间是3D的,那么我们能否找到一个光滑曲面的方程,它将穿过给定的一组空间坐标?

是否有任何库(任何语言)\工具来执行此类计算?

+0

什么顺序曲线,你看画? – 2009-05-28 08:18:16

+0

订单不是问题。我只是想知道存在? – 2009-05-28 08:50:34

回答

2

你应该找的是一些实现NURBS(或非均匀有理B样条)的库。这将在2d和3d中解决您的问题,因为2d只是3d的特例。

粗略地说,你对实际的方程不感兴趣,你只关心用光滑的曲线或曲面来近似点。这是通过在2d或3d空间中找到“控制点”来完成的,它们与B样条基函数相乘。 NURBS库会为你做这件事。

干杯!

编辑:

看一看this one

1

你总是可以通过点拟合一个10阶多项式。这并不一定是你想要做的,虽然 - 通过一系列样条曲线拟合一条平滑的曲线会给你一个更好看的结果。关于维基百科的curve-fitting文章为您提供了各种选项的完美概述。

1

在2D情况下,您要求进行曲线拟合。这实际上存在于Excel中,您绘制点的位置(如果列出了x和y,我通常使用XY散点图),然后右键单击曲线。选择添加趋势线。在那里你可以选择你想要的功能类型,你可以让excel在图像中显示它(标签命名选项,勾选“在图表上显示方程”框)。很好,很快。

否则,您可以使用matlab并使用lsqr(最小二乘法)。如果你想找到最能描述数据的多项式,你可以使用polyfit函数。它使用最小二乘法,但返回系数。 Matlab有一整套其他算法用于求解/找到线性方程组的“最佳”逼近。我提到lsqr是因为如果你没有matlab,它是实现自己最简单的一个。另一方面,它用于求解线性方程组 - 我对你的数据一无所知。