Matlab最小二乘法曲线拟合的应用实例.doc
文本预览下载声明
MATLAB机械工程
最小二乘法曲线拟合的应用实例
班 级:
姓 名:
学 号:
指导教师:
一,实验目的?
通过Matlab上机编程,掌握利用Matlab软件进行数据拟合分析及数据可视化方法?
二,实验内容?
1.有一组风机叶片的耐磨实验数据,如下表所示,其中X为使用时间,单位为小时h,Y为磨失质量,单位为克g。要求:
对该数据进行合理的最小二乘法数据拟合得下列数据。
?x=[10000?11000?12000?13000?14000?15000?16000?17000?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?65.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,65.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;
end
Q=1-chi2cdf(chi2,freedom); %判断拟合良好度
clf,shg
subplot(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 on
errorbar(x,YE{nod},D{nod},‘r’);hold off
title(‘较适当阶次的拟合’)
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})
运行结果分为两个阶段,第一阶段先判断拟合度,第二阶段根据拟合度,选择合适的拟合阶次,再绘出拟合结果。
运行结果如下:
根据图形选择适当的阶次(请输入数值)4
拟合多项式系数
0.0000 -0.0000 0.0000 -0.1609 504.2295
拟合系数的离差
0.0000 0.0000 0.0000 0.0399 153.3130
四.输出图像
显示全部