大学数学实验 数据拟合与曲线拟合
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基础实验五 数据拟合与曲线拟合
一、实验目的
对于某个变化过程中的相互依赖的变量,可建立适当的数学模型,用于分析、预报、决策或控制该过程。
对于两个变量可通过用一个一元函数去模拟这两个变量的取值,但用不同的方法可得到不同的模拟函数。
使用最小二乘法来进行数据拟合,用基本函数曲线及其变化模拟给定的曲线,理解拟合方法。
二、实验材料
2.1 曲线拟合
(1)初等函数包括基本初等函数与它们经过加减乘除复合等运算后所得到的函数的图形及其变换。
拟合函数为多项式情形理论上已经解决,称为拉格朗日插值多项式。
(2)光滑曲线的有关内容,包括分段函数的连续性、一阶可导性与高阶可导性。
(3)方程或方程组的求解,包括超越方程或方程组的近似解法,线性方程组的精确解。
2.2最小二乘法
给定平面上一组点(i x ,i y )(n i ,,2,1 =)作曲线拟合有多种方法,其中最小二乘法是常
用的一种。
最小二乘法的原理是:求)(x f ,使∑=-=n k k k y x f 1
2])([δ达到最小。
拟合时,选取一定的拟合函数形式,设拟合函数的基底函数为
,)(,,)(,)(10x x x m ϕϕϕ
拟合函数为
,)()()()(1100x c x c x c x f m m ϕϕϕ+++=
确定m c c c ,,,10 使方差δ达到极小,此时得到的)(x f 即为所求。
为使δ取到极值,将)(x f 的
表达式代入,对δ求i c 的偏导数,令其等于零,得到1+m 方程组成的方程组,从中求解i c 。
当m =1时,取拟合函数bx a x f +=)(,此做法称为线性拟合,统计学上叫做线性回归。
此时,临界方程组为
⎪⎩⎪⎨⎧=⎪⎭⎫ ⎝⎛+=⎪⎭⎫ ⎝⎛+∑∑∑∑∑=====n i i i n i i n i i n i i n i i y x b x x y b x na 1121
11, 从中解出a 与b ,有y x x l l x f xx xy +-=
)()(,其中∑==n i i x n x 11 ,∑==n i i y n y 11 21)(x x l n i i xx -=∑=, ))((1y y x x l i n
i i xy --=∑=。
Mathematica 提供了最基本的数据拟合函数Fit ,这个函数使用最小二乘法产生基函数的线性组合以构造出拟合函数。
函数的参数表中包括三项:第一个参数是被拟合的数据;第二个参数是一个表,用于说明拟合用的基函数;第三个参数是拟合变量。
2.3 线性拟合
练习1 为研究某一化学反应过程中温度)(0C x 对产品得率y (%)的影响,测得数据如下:
试求其线性拟合曲线。
Mathematica 程序:
b1={{100,45},{110,51},{120,54},{130,61},{140,66},{150,70},{160,74},{170,78}, {180,85},{190,89}} (将数据以表的形式输入)
ft1=Fit[b1,{1,x},x] (用Fit 拟合,这里是线性拟合)
gp=Plot[ft1,{x,100,190},PlotStyle->{RGBColor[1,0,0]}] (作拟合曲线的图形) fp=ListPlot[b1,PlotStyle->{PointSize[0.05],RGBColor[0,0,1]}] (作散点图)
Show[fp,gp] (显示点组与拟合曲线,作图。
下面为计算残差的程序) a= ;b= ; (a ,b 的值由上面的结果确定)
f[x_]=a*x+b; (拟合函数)
darata=Sum[(b1[[i,2]]-f[b1[[i,1]]])^2,{i,1,10}](计算残差)
2.4 非线性拟合
提示:先用ListPlot 语句描点,观察点的分布情况,以确定拟合函数。
(1)用多项式函数拟合的Mathematica 程序:
Clear[gp,fp];
b2={{1,4},{2,6.4},{3,8.0},{4,8.4},{5,9.28},{6,9.5},{7,9.7},{8,9.86},{9,10.0},{10,10.2}, {11,10.32},{12,10.42},{13,10.5},{14,10.55},{15,10.58},{16,10.6}}
gp=ListPlot[b3,PlotStyle->{RGBColor[0,1,0],PointSize[0.04]}]
ft2=Fit[b3,Table[x^i,{i,0,4}],x] (用四次曲线拟合)
fp=Plot[ft2,{x,0,17},PlotStyle->{RGBColor[1,0,0]}]
Show[gp,fp]
f[x_]=expr; (用拟合的多项式函数来定义f(x ))
darata=Sum[(b2[[i,2]]-f[b2[[i,1]]])^2,{i,1,16}](计算残差)
(2)用函数x b ae y =作拟合,求拟合曲线。
作变换x
x 1=
,y y ln =,拟合函数变形为x b a y +=ln 。
Mathematica 程序为: fx[x_]:=1/x
fy[y_]:=Log[y]
nb=Table[{fx[b2[[i,1]]],fy[b2[[i,2]]]},{i,1,16}]
ft3=Fit[nb,{1,x},x] (拟合)
f4=a*Exp[b/x] (a ,b 的值由上面的结果确定)
t1=Plot[f4,{x,1,18},PlotStyle->{RGBColor[1,0,0]}]
t2=ListPlot[b2,PlotStyle->{RGBColor[0,1,0],PointSize[0.05]}]
Show[%,%%]
(3)用x
b a y +=1作拟合。
Mathematica 程序为: g[y_]:=1/y
sb=Table[{b2[[i,1]],g[b2[[i,2]]]},{i,1,16}]
ft5=Fit[sb,{1,1/x},x]
f5=1/ft5
t3=Plot[f5,{x,1,16},PlotStyle->{RGBColor[0,0,1]}]
Show[t1,t2,t3](在一张图上比较一下用两种方法得到的函数曲线)
(4)用分段函数作拟合。
2.4 思考题
1
求其线性拟合曲线.
2y )实验,得数据如下:
以模型2
+
=作曲线拟合。
y+
cx
bx
a
3
试作非线性拟合。