资源描述:
《数学建模线性拟合与非线性拟合》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数学实验与数学建模实验报告学院:南通大学理学院班级:信计111学号:姓名:实验名称:线性拟合与非线性拟合指导教师:填写日期:2013年11月5日实验五线性拟合与非线性拟合一、实验指导解读本实验的主要目的是了解迭代法,研究迭代数列的收敛性,学习线性方程组的求解以学习非线性方程组的求解。本次实验是通过两个变量的多组记录数据利用最小二乘法寻求两个变量之间的函数关系。两个变量之间的函数关系主要有两种:一是线性关系(一次函数);二是非线性关系(非一次的其它一元函数)。因此本实验做两件事:一是线性拟合(习题1);二是非线性拟合(习题2)。习题2是用多项式函数、指数函数、双曲函数等初等函数以及分段函数拟合
2、。二、实验基本方法与理论:(习题1)线性拟合修改、补充程序要说明拟合效果,主要从形(大多数散点是否在拟合曲线上或附近)与量(残差是否小)!计算残差的程序:假设对两个变量的多组记录数据已有程序biao={{x1,y1},{x2,y2},…,{xn,yn}}并且通过Fit得到线性拟合函数y=ax+b我们可以先定义函数(程序)f[x_]:=a*x+b再给出计算残差的程序dareta=Sum[(biao[[i,2]]-f[biao[[i,1]]])^2,{i,1,n}]程序说明:biao[[i]]是提取表biao的第i行,即{xi,yi}biao[[i,1]]是提取表biao的第i行的第一个数,即x
3、ibiao[[i,2]]是提取表biao的第i行的第一个数,即yibiao[[i,2]]-f[biao[[i,1]]]即yi-(a*xi+b)(习题2)非线性拟合修改、补充程序要说明拟合效果,主要从形(大多数散点是否在拟合曲线上或附近)与量(残差是否小)!计算残差的程序:假设对两个变量的多组记录数据已有程序biao={{x1,y1},{x2,y2},…,{xn,yn}}并且通过Fit得到非线性拟合函数y=f(x)我们可以先定义函数(程序)f[x_]:=再给出计算残差的程序dareta=Sum[(biao[[i,2]]-f[biao[[i,1]]])^2,{i,1,n}]程序说明:biao[[
4、i]]是提取表biao的第i行,即{xi,yi}biao[[i,1]]是提取表biao的第i行的第一个数,即xibiao[[i,2]]是提取表biao的第i行的第一个数,即yibiao[[i,2]]-f[biao[[i,1]]]即yi-f(xi)三、实验的整体思路(1)对数据线性拟合1、先对习题1的十组数据线性拟合,并从形与量看拟合效果;2、对习题1的十组数据中的9组数据线性拟合,并从形与量看拟合效果;3、对习题1的十组数据中的6组数据线性拟合,并从形与量看拟合效果。4、对习题1的十组数据增加数据线性拟合,并从形与量看拟合效果。(2)非线性拟合1、先对习题2的数据用二次、三次、…、十五次多项
5、式函数分别非线性拟合,并从形与量看拟合效果;思考用多项式函数非线性拟合的优点与缺点。考虑对习题2的数据增加或减少2、先对习题2的数据用指数函数、双曲函数等初等函数分别非线性拟合,并从形与量看拟合效果;思考用初等函数非线性拟合的优点与缺点,同时思考有没有其它更好的非线性拟合。考虑对习题2的数据增加或减少3、先对习题2的数据用分段函数(非初等函数)非线性拟合,并从形与量看拟合效果;思考用分段函数非线性拟合的优点与缺点,同时思考有没有其它更好的非线性拟合。四、实验过程(一)线性拟合1、首先求出线性拟合函数f[x_]=a*x+b;中a、b的值,程序如下:lianxi1biao={{100,45},{
6、110,51},{120,54},{130,61},{140,66},{150,70},{160,74},{170,78},{180,85},{190,89}}ft1=Fit[lianxi1biao,{1,x},x]gp=Plot[ft1,{x,100,190},PlotStyle->{RGBColor[1,0,0]}]fp=ListPlot[lianxi1biao,PlotStyle->{PointSize[0.05],RGBColor[0,0,1]}]Show[fp,gp]所以a=0.48303030303030314`;b=-2.73939393939394`;将a、b代入函数f[x_
7、]=a*x+b中,算出残差,程序如下:a=0.48303030303030314`;b=-2.73939393939394`;f[x_]=a*x+b;dareta=Sum[(lianxi1biao[[i,2]]-f[lianxi1biao[[i,1]]])^2,{i,1,10}]得出残差图形如下:2、对习题1的十组数据中的九组数据线性拟合,首先求出线性拟合函数f[x_]=a*x+b;中a、b的值,程序如下:C