六.参考文献
【1】 刘超,MATLAB基础与实践教程,机械工业出版社,2011年。 【2】 戴朝寿,数理统计简明教程,高等教育出版社,2009年。
【3】 阳明盛,熊西文,林建华,MATLAB基础与数学软件,大连理工大学出版社,2003年。
【4】 韩中庚,数学建模方法及其应用,高等教育出版社,2005年。 【5】 费业泰,误差理论与数据处理,机械工业出版社,2005年。
附录
MATLAB程序 问题一:
A1=[62.7,80.3,80.4,68.6,73.3,73.2,71.5,72.3,81.5,74.2,70.1,53.9,74.6,73,58.7,74.9,79.3,59.9,78.6,78.6,77.1,77.2,85.6,78,69.2,73.8,73]; [H,P,JBSTAT,CV]=jbtest(A1,0.04) H =0
P =0.1589
JBSTAT =3.6795 CV =6.4378
A2=[68.1,74,74.6,71.2,72.1,66.3 ,65.3,66,78.2,68.8,61.6,68.3,68.8,
72.6,65.7,69.9,74.5,65.4,72.6,75.8,72.2,71.6,77.1,71.5,68.2,72, 71.5]; [H,P,JBSTAT,CV]=jbtest(A2,0.04) H =0
P =0.7696
JBSTAT =0.5239 CV =6.4378
B1=[82,74.2,85.3,79.4,71,68.4,77.5,71.4,72.9,74.3,72.3,63.3,65.9,72, 72.4,74,78.8,73.1,72.2,77.8,76.4,71,75.9,73.3,77.1,81.3,64.8,81.3]; [H,P,JBSTAT,CV]=jbtest(B1,0.04)
21
H =0
P =0.9124
JBSTAT =0.1834 CV =6.4378
B2=[77.9,75.8,75.6,76.9,81.5,75.5,74.2,72.3,80.4,79.8,71.4,72.4,73.9,77.178.4,67.3,80.3,76.7,76.4,76.6,79.2,79.4,77.4,76.1,79.5,74.3,77,79.6];
[H,P,JBSTAT,CV]=jbtest(B2,0.04) H =0
P =0.1684
JBSTAT =3.5625 CV =6.4378
X=[A1,A2]; subplot 121; normplot(X);
legend('A1 check','A2 check'); Y=[B1,B2]; subplot 122; normplot(Y);
legend('B1 check','B2 check'); alpha=0.05
[P,H]=ranksum(A1,B1,0.05) P =0.9396 H =0
[P,H]=ranksum(A2,B2,0.05) P =1.4077e-006 H =1
sigma=sqrt(51.91728); ex=73.05556; p=1-0.05/2;
u=norminv(p,0,1) u =1.9600
mu=[ex-u*sigma/sqrt(n1),ex+u*sigma/sqrt(n1)] mu =
70.3377 75.7734
sigma=sqrt(15.2383); ex=70.51481; p=1-0.05/2;
u=norminv(p,0,1)
22
u =1.9600
mu=[ex-u*sigma/sqrt(n2),ex+u*sigma/sqrt(n2)] mu =
69.689 71.9607
sigma=sqrt( 26.08667);ex=74.26071;p=1-0.05/2; u=norminv(p,0,1) u =1.9600
mu=[ex-u*sigma/sqrt(n1),ex+u*sigma/sqrt(n1)] mu =
72.3342 76.1872
sigma=sqrt(9.695753 ); ex=76.53214; p=1-0.05/2;
u=norminv(p,0,1) u =1.9600
mu=[ex-u*sigma/sqrt(n2),ex+u*sigma/sqrt(n2)] mu =
75.3788 77.6855
问题二: %cwfac.m
function result=cwfac(vector); fprintf(' 相关系数矩阵:\\n')
std=CORRCOEF(vector) %计算相关系数矩阵 fprintf('特征向量(vec)及特征值(val):\\n')
[vec,val]=eig(std) %求特征值(val)及特征向量(vec) newval=diag(val) ;
[y,i]=sort(newval) ; %对特征根进行排序,y为排序结果,i为索引 fprintf('特征根排序:\\n') for z=1:length(y)
newy(z)=y(length(y)+1-z); end
fprintf('%g\\n',newy) rate=y/sum(y);
fprintf('\\n贡献率:\\n') newrate=newy/sum(newy) sumrate=0; newi=[];
for k=length(y):-1:1
sumrate=sumrate+rate(k); newi(length(y)+1-k)=i(k); if sumrate>0.85 break;
23
end
end %记下累积贡献率大85%的特征值的序号放入newi中 fprintf('主成分数:%g\\n\\n',length(newi)); fprintf('主成分载荷:\\n') for p=1:length(newi) for q=1:length(y)
result(q,p)=sqrt(newval(newi(p)))*vec(q,newi(p)); end
end %计算载荷 disp(result)
%cwprint.m
function print=cwprint(filename,a,b);
%filename为文本文件文件名,a为矩阵行数(样本数),b为矩阵列数(变量指标数) fid=fopen(filename,'r')
vector=fscanf(fid,'%g',[a b]); fprintf('标准化结果如下:\\n') v1=cwstd(vector) result=cwfac(v1); cwscore(v1,result);
%cwscore.m,计算得分
function score=cwscore(vector1,vector2); sco=vector1*vector2; csum=sum(sco,2);
[newcsum,i]=sort(-1*csum); [newi,j]=sort(i);
fprintf('计算得分:\\n')
score=[sco,csum,j]
%得分矩阵:sco为各主成分得分;csum为综合得分;j为排序结果
%cwstd.m,
function std=cwstd(vector)
cwsum=sum(vector,1); % [a,b]=size(vector); % for i=1:a for j=1:b
std(i,j)= vector(i,j)/cwsum(j); end end
问题三:
利用多项式曲线拟合 来对葡萄酒及葡萄进行拟合
24
wine=[8,7.286,6.271,4.914,3.6304,0.224];
putao=[273.1,237.303,35.4449,24.478,6.724,1.101];
n=[1:3];
p1=polyfit(wine,putao,n(1)) p2= polyfit(wine,putao,n(2)) p3=polyfit(wine,putao,n(3)) putao1=polyval(p1,wine); putao2=polyval(p2,wine); putao3=polyval(p3,wine);
plot(wine,putao,'ko',wine,putao1,'-k*',wine,putao2,'--kx',wine,putao3,':kd');
xlabel('wine');ylabel('putao');
legend('原始数据','1次曲线','2次曲线','3次曲线'); p1 =
33.5390 -73.1553 p2 =
10.0945 -49.2906 19.4525 p3 =
Columns 1 through 3
2.3094 -18.9459 41.5641 Column 4
-6.7461
各次拟合曲线与原数据的比较结果如图所示,。由p3可得3次拟合曲线多项式函数为: F=p3(1)x^3+p3(2)x^2+p3(3)x+p3(4)=2.3094x^3-18.9459x^2+41.5641x-6.7461 接着求的y的3次拟合的曲线机器预测误差范围+-deltay 代码如下:
[p,s]=polyfit(wine,putao,3);
[putao3,deltay]=polyval(p,wine,s);
putaolo=putao3-deltay;putaoup=putao3+deltay;
plot(wine,putao,'ko',wine,putao2,'-k*',wine,putaolo,'-.bs',wine,putaoup,'-.bd');
xlabel('wine');ylabel('putao');
legend('原始数据','3次曲线','误差下限','误差上限')
对于白葡萄酒与白葡萄的关系如下:
25
wine=[1.853,1.461,1.557,0.3664,0.0545,101.796 ]; 对于白葡萄的理化指标的选择,我们依据第二问中所分析出来的重要指标中选择6个重要指标:
putao=[0.2245,1.616,3.315,3.810,5.450,115.256]; wine=[0.0545,0.3664,1.461,1.557,1.853]; putao=[0.2245,1.616,3.315,3.810,5.450]; n=[1:3];
p1=polyfit(wine,putao,n(1)) p2= polyfit(wine,putao,n(2)) p3=polyfit(wine,putao,n(3)) putao1=polyval(p1,wine); putao2=polyval(p2,wine); putao3=polyval(p3,wine);
plot(wine,putao,'ko',wine,putao1,'-k*',wine,putao2,'--kx',wine,putao3,':kd');
xlabel('wine');ylabel('putao');
legend('原始数据','1次曲线','2次曲线','3次曲线'); p1 =
2.4603 0.2792 p2 =
0.8415 0.8960 0.5665 p3 =
Columns 1 through 3
2.4933 -6.6924 6.8559
Column 4
-0.1265
各次拟合曲线与原数据的比较结果如图所示,。由p3可得3次拟合曲线多项式函数为: F=p3(1)x^3+p3(2)x^2+p3(3)x+p3(4)=2.4933x^3-6.6924x^2+6.8559x-0.1265 接着求的y的3次拟合的曲线机器预测误差范围+-deltay 代码如下:
[p,s]=polyfit(wine,putao,3);
[putao3,deltay]=polyval(p,wine,s);
putaolo=putao3-deltay;putaoup=putao3+deltay;
plot(wine,putao,'ko',wine,putao2,'-k*',wine,putaolo,'-.bs',wine,putaoup,'-.bd');
xlabel('wine');ylabel('putao');
legend('原始数据','3次曲线','误差下限','误差上限')
26