这也与数学有关。但这在计算中也很有用。
假设你有10个坐标。(x1,y1)(x2,y2).....在二维空间中。(即在X-Y平面上)。我们能不能找到一条穿过每个坐标的平滑曲线。
在展开问题时,如果空间是三维的,那么我们能否找到一个穿过给定空间坐标集的光滑曲面的方程?
是否有任何库(任何语言)\工具来执行此类计算?
发布于 2009-05-28 09:04:54
你应该寻找的是一些实现NURBS (或非均匀有理B样条)的库。这将解决你在2d和3d中的问题,因为2d只是3d的特例。
粗略地说,你对实际的方程式不感兴趣,你只对用平滑的曲线或曲面近似的点感兴趣。这是通过在2d或3d空间中找到“控制点”来完成的,这些控制点与B样条基函数相乘。NURBS库将为您完成此操作。
干杯!
编辑:
看一看this one
发布于 2009-05-28 08:19:16
你总是可以通过这些点拟合一个10阶多项式。这不一定是你想要做的,但是-通过一系列样条线拟合一条平滑的曲线会给你带来更好的效果。维基百科上的curve-fitting文章很好地概述了各种选项。
发布于 2009-05-28 08:20:12
在2D情况下,您要求进行曲线拟合。这实际上存在于excel中,您可以在其中绘制点(如果列出了x和y,我通常使用XY散点),然后在曲线上单击鼠标右键。选择添加趋势线。在那里你可以选择你想要拟合的函数类型,你可以要求excel在图像中显示它(选项卡,勾选“在图表上显示方程式”)。又好又快。
否则,您可以使用matlab并使用lsqr (最小二乘法)。如果你想找到最接近你的数据的多项式,你可以使用polyfit函数。它使用最小二乘法,但返回系数。Matlab有一整套其他算法,用于求解/寻找线性方程组的“最佳”近似。我提到lsqr是因为如果您没有matlab,它是您自己实现的最简单的方法之一。另一方面,它用于解线性方程组-我对你的数据一无所知。
https://stackoverflow.com/questions/919758
复制相似问题