一元一次回归方程C++程序#includeiostream.h#includemath.hvoidinput(int[],int);//声明所有的函数voidoutput(intt[],int,double,double);double_mx(int);double_my(intt[],int);double_b(intt[],int,double,double);double_a(double,double,double);doublejieguo(double,double,int);double_cor(int[],int,double,double);voidmain(){intt[10],n=10;//t[]存放数据,n表示长度,总长为10doublea,b,mx,my;//a和b为方程系数,mx为Xi的平均值my为Yi平均值input(t,n);//调用输入函数mx=_mx(n);//给mx赋值以下同理my=_my(t,n);b=_b(t,n,mx,my);a=_a(mx,my,b);output(t,n,a,b);//调用输出函数cout并以此预测x=20时y=:jieguo(a,b,20)'\n';doublecor=_cor(t,n,mx,my);//调用_cor函数cout-----------通过计算相关系数cor得出:cor=cor'\t';if(cor==0)cout这条直线完全没有用处endl;if(cor==1)cout这条直线完全符合实际情况endl;if(cor0.81)cout这条直线就很好了endl;elsecout这条直线不和实际endl;}voidinput(intt[],intn)//输入函数{cout----------------------请按以下格式输入样本数据------------------------endl;coutXiYiendl;for(inti=0;in;i++){couti+1;cint[i];coutendl;}}voidoutput(intt[],intn,doublea,doubleb)//输出函数{doublesum1=0,sum2=0,sum3=0,d,e,f;for(inti=0;in;i++)sum1+=t[i];d=sum1/n;//求y的平均值for(i=0;in;i++)//求y的均方差sum2+=(t[i]-d)*(t[i]-d);e=sqrt(sum2/n);for(i=1;i=n;i++)//求x的平均值sum3+=i;f=sum3/n;cout---------------------------------整理分析数据---------------------------------endl;cout对以上数据进行分析得:\n;couty的平均值为:dendl;//d为y平均cout其均方差为:eendl;//e为y的均方差cout回归方程式为:y=a+bxendl;coutx的平均值为:fendl;}double_mx(intn)//求xi的平均值{inti,sum=0;for(i=1;i=n;i++)sum+=i;//sum为xi项的和returnsum/n;//返回平均值}double_my(intt[],intn)//求yi的平均值{inti,sum=0;for(i=0;in;i++)sum+=t[i];//sum为Yi项的和returnsum/n;//返回平均值}double_b(intt[],intn,doublemx,doublemy)//求方程系数b{doublefenzi=0,xfangcha=0;for(inti=1;i=n;i++){fenzi+=(i-mx)*(t[i-1]-my);xfangcha+=(i-mx)*(i-mx);//X样本方差公式}returnfenzi/xfangcha;//返回b值}double_a(doublemx,doublemy,doubleb)//求方程的系数a{returnmy-b*mx;//返回系数a}doublejieguo(doublea,doubleb,intx)//求回归方程{returna+b*x;//方程为y=a+bx}double_cor(intt[],intn,doublemx,doublemy)//编写函数测试相关系数cor{doublea1=0,b1=0,c1=0;for(inti=1;i=n;i++){a1+=(i-mx)*(t[i-1]-my);b1+=(i-mx)*(i-mx);c1+=(t[i-1]-my)*(t[i-1]-my);}a1=a1/n;b1=sqrt(b1/n);c1=sqrt(c1/n);doublecor=a1/(b1*c1);returncor;//返回double型的cor值}