1

这也与数学有关。但这在计算中也很有用。

假设你有 10 个坐标。(x1,y1)(x2,y2)..... 在二维空间中。(即在 XY 平面上)。我们能找到一条穿过每个坐标的平滑曲线吗?

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

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

4

4 回答 4

2

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

粗略地说,你对实际方程不感兴趣,你只对用平滑曲线或曲面近似的点感兴趣。这是通过在 2d 或 3d 空间中找到“控制点”来完成的,这些控制点与 B 样条基本函数相乘。NURBS 库将为您执行此操作。

干杯!

编辑:

看看这个

于 2009-05-28T09:04:53.870 回答
1

您始终可以通过这些点拟合 10 阶多项式。但是,这不一定是您想要做的 - 通过一系列样条曲线拟合平滑曲线会给您带来更好看的结果。维基百科上的曲线拟合文章为您提供了各种选项的良好概述。

于 2009-05-28T08:19:16.210 回答
1

在二维情况下,您要求进行曲线拟合。这实际上存在于 excel 中,您可以在其中绘制点(如果您列出了 x 和 y,我通常使用 XY 散点图),然后右键单击曲线。选择添加趋势线。在那里你可以选择你想要适合的函数类型,你可以让excel在图像中显示它(名为选项的选项卡,选中“在图表上显示方程”框)。又好又快。

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

于 2009-05-28T08:20:11.557 回答
0

看看样条线

搜索“样条插值库”可能会为实现提供一些有用的提示。

于 2009-05-28T08:21:20.290 回答