这也与数学有关。但这在计算中也很有用。
假设您有10个坐标。 (x1,y1)(x2,y2)......在2D空间中。 (即在X-Y平面上)。我们可以在每个坐标上找到一条平滑的曲线。
在扩展问题的同时,如果空间是3D,那么我们能找到一个光滑表面的方程,它跨越一组给定的空间坐标吗?
是否有任何库(任何语言)\工具来执行此类计算?
答案 0 :(得分:2)
您应该寻找的是一些实现NURBS(或非统一Rational B-Splines)的库。这将解决你在2d和3d中的问题,因为2d只是3d的特殊情况。
粗略地说,您对实际方程式不感兴趣,您只对使用平滑曲线或曲面近似的点感兴趣。这是通过在2d或3d空间中找到“控制点”来完成的,这些控制点与B样条基函数相乘。 NURBS库将为您完成此任务。
干杯!
编辑:
查看this one
答案 1 :(得分:1)
你总是可以通过这些点拟合10阶多项式。但这并不一定是你想要做的 - 通过一系列样条曲线拟合平滑的曲线会给你一个更好看的结果。维基百科上的curve-fitting文章为您提供了各种选项的概述。
答案 2 :(得分:1)
在2D情况下,您要求进行曲线拟合。这实际上存在于excel中,您可以在其中绘制点(如果列出了x和y,我通常使用XY散射),然后右键单击曲线。选择添加趋势线。在那里你可以选择你想要适合哪种功能,你可以要求excel在图像中显示它(选项卡选项,选中“在图表上显示方程式”框)。很好,很快。
否则你可以使用matlab并使用lsqr(最小二乘法)。如果要查找最接近最能描述数据的多项式,可以使用polyfit函数。它使用最小二乘法,但返回系数。 Matlab有一整套其他算法用于求解/找到线性方程组的“最佳”近似。我提到lsqr,因为如果你没有matlab,它是最简单的实现之一。另一方面,它是用于求解线性方程组 - 我对你的数据一无所知。
答案 3 :(得分:0)