曲线拟合

在许多情况下,用户可能想要找到对给定数据集达到最佳拟合的公式. 在 Wolfram 语言中要实现这一目的一种方法是使用 Fit.

Fit[{f1,f2,},{fun1,fun2,},x]寻找 的线性组合,使之对 达到最优拟合

基本线性拟合.

这是前 20 个素数的列表.
In[1]:=
Click for copyable input
Out[1]=
这是上述数据的图形.
In[2]:=
Click for copyable input
Out[2]=
这里给出上述素数列表的线性拟合. 该结果是函数 的最佳线性组合.
In[3]:=
Click for copyable input
Out[3]=
这是拟合函数的图形.
In[4]:=
Click for copyable input
Out[4]=
这是原数据与拟合函数.
In[5]:=
Click for copyable input
Out[5]=
这里给出数据的二次拟合.
In[6]:=
Click for copyable input
Out[6]=
这是二次拟合的图形.
In[7]:=
Click for copyable input
Out[7]=
这里显示出原数据与二次拟合函数. 二次拟合优于线性拟合.
In[8]:=
Click for copyable input
Out[8]=
{f1,f2,}单自变量取值为 得到的数据点
{{x1,f1},{x2,f2},}单自变量取值为 得到的数据点
{{x1,y1,,f1},{x2,y2,,f2},}自变量取值为 得到的数据点

指定数据的方式.

如果以 形式给出数据,那么 Fit 将假定连续的 函数对应于在连续整数点 的函数值. 但是你也可以给出在一个或多个维度上,对应于任意点上的函数的 Fit 数据.

Fit[data,{fun1,fun2,},{x,y,}]对多变量函数进行拟合

多变量拟合.

这里给出 的值表. 用户必须使用 Flatten 以获得 Fit 的正确形式.
In[9]:=
Click for copyable input
Out[9]=
这里对双变量函数进行拟合.
In[10]:=
Click for copyable input
Out[10]=

Fit 采用函数列表,并且使用确定并且有效的步骤来找到产生最佳二乘拟合的函数线性组合. 然而,有时候,用户可能想要找到不只包括指定函数线性组合的非线性拟合. 这可以使用 FindFit 实现,它采用任何形式的函数,并且搜索产生数据最佳拟合的参数值.

FindFit[data,form,{par1,par2,},x]寻找使得 formdata 达到最佳拟合的 的值
FindFit[data,form,pars,{x,y,}]多变量数据拟合

寻找数据的一般拟合.

这里使用各项的简单线性组合对质数列表进行拟合.
In[11]:=
Click for copyable input
Out[11]=
该结果与 Fit 所得结果相同.
In[12]:=
Click for copyable input
Out[12]=
这里使用的是非线性形式拟合,并不能由 Fit 处理.
In[13]:=
Click for copyable input
Out[13]=

默认情况下,FitFindFit 产生最小二乘拟合,我们定义它来最小化 的值,其中 是给定每个原始数据点和拟合值的差异下的残差. 然而,用户也能基于其它范数考虑拟合. 如果用户设置选项 NormFunction->u,那么FindFit 将试图找到最小化 的值的拟合,其中 r 是残差列表. 默认为 NormFunction->Norm,对应于最小二乘拟合.

这里使用 范数,它能够最小化拟合值和数据值之间的最大距离. 所得结果与最小二乘法所得结果略有不同.
In[14]:=
Click for copyable input
Out[14]=

FindFit 首先寻找产生最佳拟合的参数值. 有时候,用户可能要告诉系统从什么位置开始搜索. 用户可以通过给出 形式的参数实现. FindFit 也为用户提供了多种选项设置,以便用户控制如何进行搜索.

FindFit[data,{form,cons},pars,vars]寻找在参数约束 cons 条件下的最佳拟合

寻找数据的一般拟合.

这里给出在参数约束条件下的最佳拟合.
In[15]:=
Click for copyable input
Out[15]=
选项名
默认值
NormFunctionNorm采用的范数
AccuracyGoalAutomatic试图获得的准确度的位数
PrecisionGoalAutomatic试图获得的精度的位数
WorkingPrecisionAutomatic在内部计算中采用的精度
MaxIterationsAutomatic采用的最大迭代次数
StepMonitorNone在每一步中所计算的表达式
EvaluationMonitorNone当计算 form 时,所计算的表达式
MethodAutomatic使用的方法

FindFit 的选项.