曲线拟合(英语:curve fitting),简称拟合,俗称拉曲线,是一种构建一个函数曲线,使之最佳地吻合现有数据点(英语:data points)的过程,该过程可能附加若干条件限制。通俗地说,科学和工程问题通过诸如采样、实验等方法获得了若干离散的数据点。根据这些数据,我们往往希望得到一个连续的函数(也就是曲线)或者更加密集的离散方程与已知数据相吻合,该过程就叫做“拟合”,而得到的曲线方程就称为“拟合函数”。曲线拟合又译为:曲线配适、曲线贴合、曲线适插法,均有助理解其选择曲线方程(解析函数)来“模拟吻合”观测数据的过程。
曲线拟合中可以使用插值(需要精确吻合某数据时)或平滑(构造一个平滑的函数曲线,近似符合数据点)。回归分析是与拟合密切相关的一个话题,它更关注的是统计推断,例如一条拟合到有随机误差的一组观测数据的曲线有多大的不确定性。拟合曲线可以用作数据视觉化的一种辅助手段,以表示数据缺失的函数区间的取值,也可概括两个或多个变量之间的关系。外推(extrapolation)指的是使用曲线来拟合观察数据取值范围以外的取值,往往因采取的构建函数的方式不同而有较大的不确定性
最常见的是拟合成函数 =() 的形式。
一次多项式方程, )、角度或曲率(即密切圆(英语:osculating circle)半径的倒数1/)。角度和曲率的限制通常用在曲线的终端,此时称为终端条件 。两条不同多项式拟合曲线的变换处通常会用到相同的终端条件,以确保样条(spline)平滑交接。也可以增加如曲率变化率等高阶约束。例如,在高速公路立体交叉点苜蓿叶型的设计中,可以理解为汽车沿着苜蓿叶立交运动时作用在汽车上的力的变化率(加加速度),并依此设定合理的限速。
一次多项式也可以拟合一个单点和一个角度的限制;三次多项式也可以拟合两点、一个角度约束以及一个曲率约束。许多其它类型的约束组合也同样可以用低阶或者高阶多项式来拟合。
在有超过+1个约束(n是多项式的阶次)的情况下,多项式拟合可能仍然能满足所有约束。满足所有约束的精确拟合不一定能够得到(但是有可能得到,例如一次多项式拟合中的三点共线)。通常,我们需要使用一些方法来评价拟合的好坏。最小二乘法就是用来评价偏离的一种常用的方法。
虽然提高多项式的次数可能可以获得精确拟合,但有时我们仍会采用近似拟合,其原因有下:
其他类型的曲线在特定条件下也可使用,诸如三角函数(如正弦或余弦函数)。
在光谱学中,数据可以使用高斯、柯西、福格特等相关函数来拟合。
在生物学、生态学、人口学、传染病学等学科中,生物个体数增长、传染病扩散等数据可以用逻辑斯谛函数(一种S型函数)来拟合。
在农业中,倒S型函数被用于描述作物产量和生长因子之间的关系。右方蓝色的图表是将农田中的测量数据进行S形回归得出的。可以看出作物产量在土壤盐度增加时先缓慢降低,之后降得更快,最终又趋于缓和。
在数据的代数分析中,“拟合”通常意味着试图找到使点的垂直(y轴)方向偏移最小的曲线(例如普通最小二乘法)。然而,对于图形和图像应用,几何拟合可以提供最佳的视觉拟合;它通常试图使到曲线的正交距离最少(例如整体最小二乘法(英语:total least squares)),或以其他方式将点和曲线之间两个轴的方向上的偏移都考虑在内。由于往往需要非线性和/或迭代运算,尽管几何拟合的结果有更美观和几何上更准确的优势,但实际上较少使用。
很多统计软件包(英语:List of statistical packages),例如R语言,以及数值分析软件(英语:List of numerical-analysis software),例如gnuplot、GNU科学库、MLAB(英语:MLAB)、Maple、MATLAB、TK Solver 6.0、Scilab、Mathematica、GNU Octave和SciPy,都可以用命令行进行不同情景下的曲线拟合。