最小二乘法拟合的MATLAB和Excel实现
- 格式:doc
- 大小:138.18 KB
- 文档页数:8
方便大家使用的最小二乘法曲线拟合的Matlab程序非常方便用户使用,直接按提示操作即可;这里我演示一个例子:(红色部分为用户输入部分,其余为程序运行的结果,结果图为Untitled.fig,Untitled2.fig) 请以向量的形式输入x,y.x=[1,2,3,4]y=[3,4,5,6]通过下面的交互式图形,你可以事先估计一下你要拟合的多项式的阶数,方便下面的计算.polytool()是交互式函数,在图形上方[Degree]框中输入阶数,右击左下角的[Export]输出图形回车打开polytool交互式界面回车继续进行拟合输入多项式拟合的阶数m = 4Warning: Polynomial is not unique; degree >= number of data points. > In polyfit at 72In zxecf at 64输出多项式的各项系数a = 0.0200000000000001a = -0.2000000000000008a = 0.7000000000000022a = 0.0000000000000000a = 2.4799999999999973输出多项式的有关信息 SR: [4x5 double]df: 0normr: 2.3915e-015Warning: Zero degrees of freedom implies infinite error bounds.> In polyval at 104In polyconf at 92In zxecf at 69观测数据拟合数据x y yh1.0000 3.0000 3.00002.0000 4.0000 4.00003 5 54.0000 6.0000 6.0000剩余平方和 Q = 0.000000标准误差 Sigma = 0.000000相关指数 RR = 1.000000请输入你所需要拟合的数据点,若没有请按回车键结束程序.输入插值点x0 = 3输出插值点拟合函数值 y0 = 5.0000>>结果:untitled.figuntitled2.fig一些matlab优化算法代码的分享代码的目录如下:欢迎讨论1.约束优化问题:minRosen(Rosen梯度法求解约束多维函数的极值)(算法还有bug) minPF(外点罚函数法解线性等式约束)minGeneralPF(外点罚函数法解一般等式约束)minNF(内点罚函数法)minMixFun(混合罚函数法)minJSMixFun(混合罚函数加速法)minFactor(乘子法)minconPS(坐标轮换法)(算法还有bug)minconSimpSearch(复合形法)2.非线性最小二乘优化问题minMGN(修正G-N法)3.线性规划:CmpSimpleMthd(完整单纯形法)4.整数规划(含0-1规划)DividePlane(割平面法)ZeroOneprog(枚举法)5.二次规划QuadLagR(拉格朗日法)ActivedeSet(起作用集法)6.辅助函数(在一些函数中会调用)minNT(牛顿法求多元函数的极值)Funval(求目标函数的值)minMNT(修正的牛顿法求多元函数极值)minHJ(黄金分割法求一维函数的极值)7.高级优化算法1)粒子群优化算法(求解无约束优化问题)1>PSO(基本粒子群算法)2>YSPSO(待压缩因子的粒子群算法)3>LinWPSO(线性递减权重粒子群优化算法)4>SAPSO(自适应权重粒子群优化算法)5>RandWSPO(随机权重粒子群优化算法)6>LnCPSO(同步变化的学习因子)7>AsyLnCPSO(异步变化的学习因子)(算法还有bug)8>SecPSO(用二阶粒子群优化算法求解无约束优化问题)9>SecVibratPSO(用二阶振荡粒子群优化算法求解五约束优化问题)10>CLSPSO(用混沌群粒子优化算法求解无约束优化问题)11>SelPSO(基于选择的粒子群优化算法)12>BreedPSO(基于交叉遗传的粒子群优化算法)13>SimuAPSO(基于模拟退火的粒子群优化算法)2)遗传算法1>myGA(基本遗传算法解决一维约束规划问题)2>SBOGA(顺序选择遗传算法求解一维无约束优化问题)3>NormFitGA(动态线性标定适应值的遗传算法求解一维无约束优化问题)4>GMGA(大变异遗传算法求解一维无约束优化问题)5>AdapGA(自适应遗传算法求解一维无约束优化问题)6>DblGEGA(双切点遗传算法求解一维无约束优化问题)7>MMAdapGA(多变异位自适应遗传算法求解一维无约束优化问题)自己编写的马尔科夫链程序A 代表一组数据序列一维数组本程序的操作对象也是如此t=length(A); % 计算序列“A”的总状态数B=unique(A); % 序列“A”的独立状态数顺序,“E”E=sort(B,'ascend');a=0;b=0;c=0;d=0;for j=1:1:ttLocalization=find(A==E(j)); % 序列“A”中找到其独立状态“E”的位置for i=1:1:length(Localization)if Localization(i)+1>tbreak; % 范围限定elseif A(Localization(i)+1)== E(1)a=a+1;elseif A(Localization(i)+1)== E(2)b=b+1;elseif A(Localization(i)+1)== E(3)c=c+1;% 依此类推,取决于独立状态“E”的个数elsed=d+1;endendT(j,1:tt)=[a,b,c,d]; % “T”为占位矩阵endTT=T;for u=2:1:ttTT(u,:)= T(u,:)- T(u-1,:);endTT; % 至此,得到转移频数矩阵Y=sum(TT,2);for uu=1:1:ttTR(uu,:)= TT(uu,:)./Y(uu,1);endTR % 最终得到马尔科夫转移频率/概率矩阵% 观测序列马尔科夫性质的检验:N=numel(TT);uuu=1;Col=sum(TT,2); % 对列求和Row=sum(TT,1); % 对行求和Total=sum(Row); % 频数总和for i=1:1:ttfor j=1:1:ttxx(uuu,1)=sum((TT(i,j)-(Row(i)*Col(j))./Total).^2./( (Row(i)*Col(j)). /Total));uuu=uuu+1; % 计算统计量x2endendxx=sum(xx)。
matlab function编程最小二乘法在MATLAB中,使用最小二乘法拟合数据通常涉及到使用函数进行编程。
以下是一个简单的MATLAB函数,用于实现最小二乘法拟合直线的例子:function [coefficients, fittedData] = leastSquaresFit(x, y, degree)% x: 输入数据的 x 值% y: 输入数据的 y 值% degree: 拟合多项式的次数% 创建 Vandermonde 矩阵A = zeros(length(x), degree + 1);for i = 1:degree + 1A(:, i) = x.^(degree + 1 - i);end% 使用最小二乘法计算系数coefficients = (A' * A)\(A' * y);% 生成拟合曲线的数据fittedData = polyval(coefficients, x);% 绘制原始数据和拟合曲线figure;plot(x, y, 'o', x, fittedData, '-');legend('原始数据', '拟合曲线');xlabel('X轴');ylabel('Y轴');title('最小二乘法拟合');end你可以通过调用这个函数并提供你的数据和拟合多项式的次数来进行最小二乘法拟合。
例如:x = [1, 2, 3, 4, 5];y = [2.1, 2.8, 3.4, 3.7, 4.2];degree = 1;[coefficients, fittedData] = leastSquaresFit(x, y, degree);disp('拟合系数:');disp(coefficients);这是一个简单的线性拟合的例子。
你可以根据需要修改该函数,以适应高次多项式的情况。
曲线拟合(curve-fitting ):工程实践中,用测量到的一些离散的数据},...2,1,0),,{(m i y x i i =求一个近似的函数)(x ϕ来拟合这组数据,要求所得的拟合曲线能最好的反映数据的基本趋势(即使)(x ϕ最好地逼近()x f ,而不必满足插值原则。
因此没必要取)(i x ϕ=i y ,只要使i i i y x -=)(ϕδ尽可能地小)。
原理:给定数据点},...2,1,0),,{(m i y x i i =。
求近似曲线)(x ϕ。
并且使得近似曲线与()x f 的偏差最小。
近似曲线在该点处的偏差i i i y x -=)(ϕδ,i=1,2,...,m 。
常见的曲线拟合方法:1.使偏差绝对值之和最小2.使偏差绝对值最大的最小3.使偏差平方和最小最小二乘法:按偏差平方和最小的原则选取拟合曲线,并且采取二项式方程为拟合曲线的方法,称为最小二乘法。
推导过程:1. 设拟合多项式为:kk x a x a a x +++=...)(10ϕ2. 各点到这条曲线的距离之和,即偏差平方和如下:3. 问题转化为求待定系数0a ...k a 对等式右边求i a 偏导数,因而我们得到了:.......4、 把这些等式化简并表示成矩阵的形式,就可以得到下面的矩阵:5. 将这个范德蒙得矩阵化简后可得到:6. 也就是说X*A=Y ,那么A = (X'*X)-1*X'*Y ,便得到了系数矩阵A ,同时,我们也就得到了拟合曲线。
MATLAB实现:MATLAB提供了polyfit()函数命令进行最小二乘曲线拟合。
调用格式:p=polyfit(x,y,n)[p,s]= polyfit(x,y,n)[p,s,mu]=polyfit(x,y,n)x,y为数据点,n为多项式阶数,返回p为幂次从高到低的多项式系数向量p。
x 必须是单调的。
矩阵s包括R(对x进行QR分解的三角元素)、df(自由度)、normr(残差)用于生成预测值的误差估计。
matlab最小二乘法拟合直线【导言】直线拟合是数据分析和数学建模中常用的方法之一,而最小二乘法则是在直线拟合中最常用的方法之一。
在本文中,将介绍使用Matlab进行最小二乘法拟合直线的步骤和原理,并就此主题进行深入的探讨。
【正文】一、最小二乘法简介最小二乘法是一种数学优化方法,它通过最小化误差的平方和来寻找函数与观测数据之间的最佳拟合。
在直线拟合中,最小二乘法的目标是找到一条直线,使得所有观测数据点到直线的距离之和最小。
1. 确定拟合的模型在直线拟合中,我们的模型可以表示为:Y = a*X + b,其中a和b为待求参数,X为自变量,Y为因变量。
2. 计算误差对于每一个观测数据点(x_i, y_i),计算其到直线的垂直距离d_i,即误差。
误差可以表示为:d_i = y_i - (a*x_i + b)。
3. 求解最小二乘法问题最小二乘法的目标是最小化所有观测数据点到直线的距离之和,即最小化误差的平方和:min Σ(d_i^2) = min Σ(y_i - (a*x_i + b))^2。
通过求解该最小化问题,可以得到最佳拟合的直线斜率a和截距b的值。
二、Matlab实现最小二乘法拟合直线的步骤下面将介绍使用Matlab进行最小二乘法拟合直线的基本步骤。
1. 导入数据需要将实验数据导入Matlab。
可以使用matlab自带的readtable函数从文件中读取数据,也可以使用xlsread函数直接从Excel文件中读取数据。
2. 数据预处理在进行最小二乘法拟合直线之前,先对数据进行预处理。
一般情况下,可以对数据进行去除异常值、归一化等操作,以确保数据的准确性和可靠性。
3. 拟合直线使用Matlab的polyfit函数可以实现直线拟合。
polyfit函数可以拟合输入数据的曲线或平面,并返回拟合参数。
在拟合直线时,需要指定拟合的阶数,对于直线拟合,阶数为1。
4. 绘制拟合直线使用Matlab的plot函数可以将拟合的直线绘制出来,以便于观察拟合效果。
最小二乘法拟合matlab
最小二乘法拟合MATLAB
最小二乘法是一种有效地估计未知参数值的统计学方法,它假定误差服从正态分布,然后进行极大似然估计。
下面我们就来介绍一下如何使用MATLAB来拟合最小二乘法。
1.第一步:绘制出要拟合的数据,这里我们绘制出了一个简单的抛物线数据:
x=[-3 -2 -1 0 1 2 3];
y=[6 3 1 0 -2 -4 -7];
plot(x,y);
2.第二步:根据你要拟合的函数,构建出你所要拟合的模型。
这里,我们想拟合一条抛物线:y=ax2+bx+c ;
3.第三步:定义拟合函数:
fun=@(x,xdata)x(1)*xdata.^2+x(2)*xdata+x(3);
4.第四步:调用最小二乘法函数:
[x,resnorm,residual,exitflag,output,lambda,jacobian]=lsqcur vefit(fun,[1 1 1],x,y);
现在你已经可以看到拟合函数的参数了:
x的值为[1.7, 0.3, -1.5],
而拟合函数为: y=1.7x2+0.3x-1.5
因此,使用MATLAB调用最小二乘法可以很方便地拟合出任意复
杂的函数,并且可以得到准确的参数值。
一、概述Matlab是一种强大的数学软件,它提供了许多用于数学建模、数据分析、图形可视化等功能的工具。
对数最小二乘拟合是其中一个重要的功能,它可以帮助研究人员处理实验数据,找出数据之间的相关性,从而进行有效的数据分析和建模。
在本文中,我们将讨论Matlab中对数最小二乘拟合的原理、方法和应用。
二、对数最小二乘拟合的原理对数最小二乘拟合是一种特殊的非线性拟合方法,它适用于当实验数据呈现出指数增长或指数衰减的趋势时。
对数最小二乘拟合的原理是将实验数据取对数变换,然后使用最小二乘法进行拟合。
最小二乘法是一种常用的数值优化方法,它通过最小化实际观测值和模型预测值之间的残差平方和来确定模型参数,从而实现拟合。
三、Matlab中对数最小二乘拟合的方法在Matlab中,可以使用“lsqcurvefit”函数进行对数最小二乘拟合。
该函数可以通过最小二乘法拟合非线性方程,并返回拟合参数和拟合效果。
使用该函数时,需要提供拟合的非线性方程、初始参数估计值、实验数据及其权重等信息,以便进行拟合。
在拟合结束后,可以通过绘制拟合曲线和残差图来评估拟合效果。
四、对数最小二乘拟合的应用对数最小二乘拟合在实际应用中具有广泛的意义。
在生物学领域,用对数最小二乘拟合可以研究物种种裙的增长趋势;在经济学领域,可以用来分析经济指标的增长规律等。
通过对数最小二乘拟合,研究人员可以更加准确地描述实验数据的变化规律,从而做出更有力的数据分析和预测。
五、结论对数最小二乘拟合是Matlab中的重要功能之一,它可以帮助研究人员处理实验数据、分析数据规律,并进行数学建模。
本文讨论了对数最小二乘拟合的原理、方法和应用,希望可以为对数最小二乘拟合的研究和应用提供一些有益的参考。
在实际应用中,研究人员可以根据具体的问题和实验数据,灵活运用Matlab中的数学工具,进行数据分析和建模工作。
六、对数最小二乘拟合的优缺点尽管对数最小二乘拟合在处理指数增长或指数衰减的数据时具有一定优势,但同样也存在一些局限性。
最小二乘法拟合的MATLAB和Excel实现摘要:生活生产中我们会遇到各种各样的数据处理,然而这些数据并不像理想实验中得到的数据,有的是一元或多元函数的分布,有的是一次或多次函数的分布,这就需要我们首先观察数据的散点图,进而选择合理的选择函数进行拟合,同时分析计算该拟合得到的误差,找出最优的拟合方式。
本文从数学上对最小二乘法原理进行了阐述,并通过MATLAB和Excel 完成数据的拟合,在进行数据拟合中使用的一次函数拟合和多项式拟合,并对不同的拟合方式进行了比较,到了不同拟合方式下的拟合函数和拟合误差。
同时对MATLAB和Excel数据拟合方式进行了对比。
关键字:最小二乘法 MATLAB Excel 数据拟合Abstract:we will encounter a variety of data processing in production life .However these data is not the data as we expect in ideal experiment;some distribution is a univariate or multivariate functions, some is one or more times function.So we should observe the scatter data chart,and then choose the reasonable selection function fitting, make an error analysis and find out the best way of fitting. This paper expound the principle of least square mathematically,complete data fitting by MATLAB and Excel,and use a function fitting and polynomial fitting.we also compare the different fitting methods,the fitting function and fitting error by the way of MATLAB and Excel.Keywords: Least squares MATLAB Excel Data fitting引言工程试验中我们常常遇到这样的问题,试验中我们会得到各种各样的数据,不同的数据之间存在着这样那样的关系,如何把得到的试验数据用函数关系式来得到不同组数据之间的关系,并且在经过数据处理后得到的函数能够客观准确的描述数据与数据数据之间的关系。
MATLAB机械工程最小二乘法曲线拟合的应用实例班级:姓名:学号:指导教师:一,实验目的通过Matlab上机编程,掌握利用Matlab软件进行数据拟合分析及数据可视化方法二,实验内容1.有一组风机叶片的耐磨实验数据,如下表所示,其中X为使用时间,单位为小时h,Y为磨失质量,单位为克g。
要求:对该数据进行合理的最小二乘法数据拟合得下列数据。
x=[10000 11000 12000 13000 14000 15000 16000 170 00 18000 19000 20000 21000 22000 23000];y=[24.0 26.5 29.8 32.4 34.7 37.7 41.1 42.8 44.6 47.3 6 5.8 87.5 137.8 174.2]三,程序如下X=10000:1000:23000;Y=[24.0,26.5,29.8,32.4,34.7,37.7,41.1,42.8,44.6,47.3,6 5.8,87.5,137.8,174.2]dy=1.5; %拟合数据y的步长for n=1:6[a,S]=polyfit(x,y,n);A{n}=a;da=dy*sqrt(diag(inv(S.R´*S.R)));Da{n}=da´;freedom(n)=S.df;[ye,delta]=polyval(a,x,S);YE{n}=ye;D{n}=delta;chi2(n)=sum((y-ye).^2)/dy/dy;endQ=1-chi2cdf(chi2,freedom); %判断拟合良好度clf,shgsubplot(1,2,1),plot(1:6,abs(chi2-freedom),‘b’) xlabel(‘阶次’),title(‘chi2与自由度’)subplot(1,2,2),plot(1:6,Q,‘r’,1:6,ones(1,6)*0.5) xlabel(‘阶次’),title(‘Q与0.5线’)nod=input(‘根据图形选择适当的阶次(请输入数值)’);elf,shg,plot(x,y,‘kx’);xlabel(‘x’),ylabel(‘y’);axis([8000,23000,20.0,174.2]);hold onerrorbar(x,YE{nod},D{nod},‘r’);hold offtitle(‘较适当阶次的拟合’)text(10000,150.0,[‘chi2=’num2str(chi2(nod))‘~’int2str(freedom(nod))])text(10000,140.0,[‘freedom=’int2str(freedom(nod))]) text(20000,40.0,[‘Q=’num2str(Q(nod))‘~0.5’])disp(‘’)disp(‘拟合多项式系数’),disp(A{nod})disp(‘拟合系数的离差’),disp(DA{nod})运行结果分为两个阶段,第一阶段先判断拟合度,第二阶段根据拟合度,选择合适的拟合阶次,再绘出拟合结果。
最小二乘法求二次拟合多项式 matlab最小二乘法求二次拟合多项式 Matlab1. 介绍最小二乘法是一种常用的数学优化方法,用于寻找一组参数,使得模型预测值与实际观测值之间的平方误差和最小。
在拟合多项式曲线时,最小二乘法能够帮助我们找到最佳的拟合曲线,从而更好地描述数据之间的关系。
2. 理论基础在进行二次拟合时,我们希望找到一个二次多项式曲线,使得该曲线能够最好地拟合给定的数据点。
二次多项式的一般形式为:y = ax^2 + bx + c。
其中,a、b、c为待定系数,需要通过最小二乘法来求解。
3. Matlab实现步骤我们需要将实际观测数据以矩阵的形式输入到Matlab中。
假设我们已经将x轴与y轴的观测数值分别存储在矩阵X和Y中。
接下来,我们可以使用Matlab中的polyfit函数来进行最小二乘法拟合。
该函数的语法为:p = polyfit(X, Y, n),其中n为多项式的次数。
对于二次拟合,我们将n设为2。
函数将返回多项式系数p,其中p(1)对应于二次项的系数a,p(2)对应于一次项的系数b,p(3)对应于常数项c。
我们可以使用polyval函数来计算拟合的二次多项式在给定x轴数值下的y轴预测值。
语法为:Y_fit = polyval(p, X)。
4. 个人观点和理解最小二乘法求二次拟合多项式在实际工程和科学研究中具有非常重要的应用价值。
通过这种方法,我们能够利用已知数据点来构建一个更加准确的模型,从而能够更好地理解数据之间的关系。
在使用Matlab进行二次拟合时,我们不仅可以得到拟合的二次多项式曲线,还能够通过拟合结果进行后续的数据预测和分析。
这种方法不仅简单高效,而且在处理实际问题时非常有用。
总结通过最小二乘法求解二次拟合多项式,我们能够通过Matlab快速、准确地得到拟合曲线的系数,从而更好地理解数据之间的关系。
这种方法也为我们提供了一种有效的工程应用解决方案。
最小二乘法求二次拟合多项式 Matlab的方法对于分析实验数据和建立数据模型有着重要的意义,值得我们深入学习和应用。
最小二乘法拟合的MATLAB和Excel实现摘要:生活生产中我们会遇到各种各样的数据处理,然而这些数据并不像理想实验中得到的数据,有的是一元或多元函数的分布,有的是一次或多次函数的分布,这就需要我们首先观察数据的散点图,进而选择合理的选择函数进行拟合,同时分析计算该拟合得到的误差,找出最优的拟合方式。
本文从数学上对最小二乘法原理进行了阐述,并通过MATLAB和Excel 完成数据的拟合,在进行数据拟合中使用的一次函数拟合和多项式拟合,并对不同的拟合方式进行了比较,到了不同拟合方式下的拟合函数和拟合误差。
同时对MATLAB和Excel数据拟合方式进行了对比。
关键字:最小二乘法 MATLAB Excel 数据拟合Abstract:we will encounter a variety of data processing in production life .However these data is not the data as we expect in ideal experiment;some distribution is a univariate or multivariate functions, some is one or more times function.So we should observe the scatter data chart,and then choose the reasonable selection function fitting, make an error analysis and find out the best way of fitting. This paper expound the principle of least square mathematically,complete data fitting by MATLAB and Excel,and use a function fitting and polynomial fitting.we also compare the different fitting methods,the fitting function and fitting error by the way of MATLAB and Excel.Keywords: Least squares MATLAB Excel Data fitting引言工程试验中我们常常遇到这样的问题,试验中我们会得到各种各样的数据,不同的数据之间存在着这样那样的关系,如何把得到的试验数据用函数关系式来得到不同组数据之间的关系,并且在经过数据处理后得到的函数能够客观准确的描述数据与数据数据之间的关系。
如何选择数据的拟合方式,是线性拟合还是非线性拟合?是一次还是多次拟合?如何使相关系数R2接近1?通常我们用最小二乘法来确定拟合曲线和和该数据的经验公式。
本文从数学角度给出最小二乘法的推导过程,从现实生活中给出曲线拟合的实际应用,同时用MATLAB和Excel两种不同的方法对数据进行曲线拟合的实现。
1 最小二乘法原理当由实验提供了大量数据时,不能要求拟合函数)(x S 在数据点(x,y ) 处的偏差,即i i i y x S -=)(δ(i=1,2,…,m) 严格为零,但为了使近似曲线尽量反映所给数据点的变化趋势 ,需对偏差有所要求.通常要求偏差平方和 ∑∑∑===-=-=mi iii i mi mi y x S y x S 022*2])([min])([δ (1-1)这里)()()()(1100x a x a x a x S n n ϕϕϕ ++= (n < m) (1-2) 这就是一般的最小二乘逼近,用几何语言说,这就称为曲线拟合的最小二乘法。
[1]用最小二乘法求拟合曲线的问题,就是在形如(1-2)式的S (x )中求一函数)(*x S y =使偏差的平方和最小。
它转化为求多元函数∑∑==-=mi i nj i j j i n x f x a x a a a I 02010)]()()[(),,(ϕω (1-3)的极小点),,(**1*0n a a a 的问题。
有求多元函数极值的必要条件,有,0)()]()()[(2020=-=∂∂∑∑==i k m i i nj i j j i k x x f x a x a Iϕϕω k=0,1,···n (1-4) 若记n,1,0,)()()(),()()()(),(00 =≡==∑∑==k d x x f x f x x x mi k i k i i k i k i j mi i k i ϕωϕϕϕωϕϕ (1-5)则可改写为矩阵形式d Ga = (1-6) 其中T n T n d d d d a a a a ),,(,),,(1010 ==,()()()()()()()()()⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=ϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕn n nn nnG ,...,,............,...,,,...,,111101010002 最小二乘法应用例1 已知数据 x 1.2 2.8 4.3 5.4 6.8 7.9 y2.1 11.5 28.1 41.9 72.3 91.4 i ω111111试用最小二乘法拟合这组数据的曲线。
解:根据所给的数据,在坐标纸上标出,见右图,从途中看到各点在一条直线附近,故选择线性函数作拟合曲线,即令x a a x S 10)(+=,这里m=5,n=1,,)(,1)(10x x x ==ϕϕ故51.1595),(,3.247),(,58.165),(,4.28),(),(,6),(51502501150110500===========∑∑∑∑∑=====i i i i i i i i i i i i i i i f x f f f x x ωϕωϕωϕϕωϕϕϕϕωϕϕ由法方程得线性方程组{51.159558.1654.283.2474.286110=+=+a a a解得a 0=-23.3498,a 1=13.6408。
于是所求拟合曲线为x x S 6408.133498.23)(1+-=同理,可以分别求出二次和三次拟合的方程)()(32x S x S 和分别为:8143.3*2774.4*6690.2*0899.0)(8328.0*4740.0*4424.1)(23322+-==-+=x x x x S x x x S3数据拟合结果的实现和误差的分析在例1中我们运用数学公式进行了最小二乘法的拟合运算[2],这种方法在计算过程中太过于复杂,下面介绍两种方法对上例进行数据拟合,首先用MATLAB 进行编程处理。
拟合的程序代码见附录。
该实验程序得到的拟合图形如下:图3-1 数据的散点图和不同类型的拟合曲线在MATLAB 中的得到的拟合函数及均方偏差结果如下:001+1.363550e =814.3*2774.4*669.2*0899.0001+1.645645e =8328.0*4740.0*442.1002+2.734957e 35.23*64.13232332222211δδδ+-+=-+==-=x x x y x x y x y从得到的拟合函数和均方偏差可知,用一次拟合得到的一次函数的均方偏差比较的大,也就是用多项式函数拟合得到的均方偏差更小,随着多项式的次数越多,均方偏差趋近于零。
图3-2 用Excel 表格进行数据拟合结果图用Excel 表格拟合得到的拟合函数及相关系数结果如下:9978.08143.3*2774.4*6690.2*0899.09973.08328.0*4740.0*4424.19549.0350.23*641.13232332222211=+-===-+==-=R x x x y R x x y R x y同理,用Excel 得到的拟合函数和MATLAB 中得到的函数结果相同,在Excel 中进行数据拟合时用相关系数R 2表示误差,(0<R 2<1)当相关系数越趋于1,说明得到的试验结果越准确,误差越小。
可以看出运用MATLAB 或Excel 进行对数据进行曲线拟合比人工计算大大减少了计算量,运用软件处理数据已经是当前时代解决数学问题的重要方法之一。
参考文献[1] 李庆阳,王能超,易大义.数值分析(第五版).北京:清华大学出版社,2008 [2] 姜健飞,胡良剑,唐俭.数值分析及其MATLAB 试验.北京:科学出版社,2004完成人签名:学院:研究方向:学号:导师姓名:完成时间:2014年12月5日附录MATLAB编程代码如下:x=[1.2 2.8 4.3 5.4 6.8 7.9]; y=[2.1 11.5 28.1 41.9 72.3 91.4];subplot(2,2,1)stem(x,y);xlabel('x')ylabel('y')title('数据散点图')p=polyfit(x,y,1); % 拟合出的一次函数的系数yc=y-polyval(p,x); % 计算误差s2=sum(yc.^2); % 误差的平方和disp(sprintf('一次误差的平方和=%d',s2));x1=linspace(min(x),max(x)); % 绘图用到的点的横坐标y1=polyval(p,x1); % 拟合曲线的纵坐标subplot(2,2,2);plot(x,y,'o',x1,y1); % 绘图,原始数据+拟合曲线legend('原始数据','一次曲线',2); % 图示s=char(vpa(poly2sym(p,'x'),4)); % 一次函数式转换为字符串,vpa转换小数,保留4位有效数字title(['y=' s]);p=polyfit(x,y,2); % 拟合出的二次函数的系数yc2=y-polyval(p,x); % 计算误差s2=sum(yc2.^2); % 误差的平方和disp(sprintf('二次误差的平方和=%d',s2));x2=linspace(min(x),max(x)); % 绘图用到的点的横坐标y2=polyval(p,x2); % 拟合曲线的纵坐标subplot(2,2,3);plot(x,y,'o',x2,y2); % 绘图,原始数据+拟合曲线legend('原始数据','二次曲线',2); % 图示s=char(vpa(poly2sym(p,'x'),4)); % 二次函数式转换为字符串,vpa转换小数,保留4位有效数字title(['y=' s]);p=polyfit(x,y,3); % 拟合出的三次函数的系数yc3=y-polyval(p,x); % 计算误差s2=sum(yc3.^2); % 误差的平方和disp(sprintf('三次误差的平方和=%d',s2));x3=linspace(min(x),max(x)); % 绘图用到的点的横坐标y3=polyval(p,x3); % 拟合曲线的纵坐标subplot(2,2,4);plot(x,y,'o',x3,y3); % 绘图,原始数据+拟合曲线legend('原始数据','三次曲线',2); % 图示s=char(vpa(poly2sym(p,'x'),4)); % 三次次函数式转换为字符串,vpa转换小数,保留4位有效数字title(['y=' s]);。