曲线拟合
在许多情况下,用户可能想要找到对给定数据集达到最佳拟合的公式. 在 Mathematica 中要实现这一目的一种方法是使用 Fit.
| Fit[{f1,f2,...},{fun1,fun2,...},x] | 寻找 的线性组合,使之对 达到最优拟合 |
基本线性拟合.
| Out[1]= |  |
| Out[2]= |  |
这里给出上述素数列表的线性拟合. 该结果是函数

和

的最佳线性组合.
| Out[3]= |  |
| Out[4]= |  |
| Out[5]= |  |
| Out[6]= |  |
| Out[7]= |  |
这里显示出原数据与二次拟合函数. 二次拟合优于线性拟合.
| Out[8]= |  |
| {f1,f2,...} | 单自变量取值为 得到的数据点 |
| {{x1,f1},{x2,f2},...} | 单自变量取值为 得到的数据点 |
| {{x1,y1,...,f1},{x2,y2,...,f2},...} | 自变量取值为 得到的数据点 |
指定数据的方式.
如果以
形式给出数据,那么 Fit 将假定连续的
函数对应于在连续整数点
的函数值. 但是你也可以给出在一个或多个维度上,对应于任意点上的函数的 Fit 数据.
| Fit[data,{fun1,fun2,...},{x,y,...}] | 对多变量函数进行拟合 |
多变量拟合.
| Out[9]= |  |
| Out[10]= |  |
Fit 采用函数列表,并且使用确定并且有效的步骤来找到产生最佳二乘拟合的函数线性组合. 然而,有时候,用户可能想要找到不只包括指定函数线性组合的非线性拟合. 这可以使用 FindFit 实现,它采用任何形式的函数,并且搜索产生数据最佳拟合的参数值.
| FindFit[data,form,{par1,par2,...},x] | 寻找使得 form 对 data 达到最佳拟合的 的值 |
| FindFit[data,form,pars,{x,y,...}] | 多变量数据拟合 |
寻找数据的一般拟合.
| Out[11]= |  |
| Out[12]= |  |
这里使用的是非线性形式拟合,并不能由
Fit 处理.
| Out[13]= |  |
默认情况下,Fit 和 FindFit 产生最小二乘拟合,我们定义它来最小化
的值,其中
是给定每个原始数据点和拟合值的差异下的残差. 然而,用户也能基于其它范数考虑拟合. 如果用户设置选项 NormFunction->u,那么FindFit 将试图找到最小化
的值的拟合,其中 r 是残差列表. 默认为 NormFunction->Norm,对应于最小二乘拟合.
这里使用

-范数,它能够最小化拟合值和数据值之间的最大距离. 所得结果与最小二乘法所得结果略有不同.
| Out[14]= |  |
FindFit 首先寻找产生最佳拟合的参数值. 有时候,用户可能要告诉系统从什么位置开始搜索. 用户可以通过给出
形式的参数实现. FindFit 也为用户提供了多种选项设置,以便用户控制如何进行搜索.
| FindFit[data,{form,cons},pars,vars] | 寻找在参数约束 cons 条件下的最佳拟合 |
寻找数据的一般拟合.
| Out[15]= |  |
FindFit 的选项.