解答
			 
			 
			
		
		
		
			
			% (1)-----选择拟合多项式拟合的阶数 
disp('请以向量的形式输入x,y.') 
x=input('x='); 
y=input('y='); 
nx = length(x); 
ny = length(y); 
n  = length(x);  
if nx == ny 
x1 = x(1); xn = x(n); 
% n个数据可以拟合(n-1)阶多项式,高阶多项式多次求导,数值特性变差 
 
disp('通过下面的交互式图形,你可以事先估计一下你要拟合的多项式的阶数,方便下面的计算.') 
 
disp('polytool()是交互式函数,在图形上方[Degree]框中输入阶数,右击左下角的[Export]输出图形') 
 
disp('回车打开polytool交互式界面') 
 
pause; 
 
polytool(x,y,1) 
 
% 观察多项式拟合的图形,选择置信区间最小的多项式阶数 
 
disp('回车继续进行拟合') 
 
pause; 
 
% (2)-----计算多项式的各项系数和拟合值 
m=input('    输入多项式拟合的阶数   m = '); 
[p,S]=polyfit(x,y,m); 
disp '      输出多项式的各项系数' 
fprintf (1,'         a = %3.16f \n',p) 
disp '      输出多项式的有关信息 S' 
disp (S) 
[yh,delta]=polyconf(p,x,S); 
disp '         观测数据     拟合数据' 
disp '       x         y       yh' 
for i = 1 : n 
   xy = [x(i) y(i) yh(i)]; 
   disp (xy) 
end 
% (3)-----绘制观测数据离散点图和多项式曲线 
 
plot(x,y,'r.') 
 
title('\bf 实验数据离散点图  /  多项式曲线 \it y = a0+a1x+a2x^2+a3x^3+...') 
grid 
hold on;  
xi=[x1:0.1:xn]; 
yi=polyval(p,xi); 
plot(xi,yi,'k-') 
% (4)-----拟合效果和精度检验 
Q=sum((y-yh).^2); 
SGM = sqrt(Q / (n - 2)); 
RR = sum((yh-mean(y)).^2)/sum((y-mean(y)).^2); 
fprintf (1,'      剩余平方和            Q = %3.6f \n',Q) 
fprintf ('\n') 
fprintf (1,'        标准误差        Sigma = %3.6f \n',SGM) 
fprintf ('\n') 
fprintf (1,'        相关指数           RR = %3.6f \n',RR) 
fprintf ('\n') 
else 
disp('输入的数据有误,请重新运行程序并输入正确的数据。') 
clear 
zxecf 
end
		 
		
		
		
		
		
		
			
				__________________ 
				学我想学,用我所学。:lovely:
			 
		
		
		
		
	 |