给一个简单的模板,大家可以根据实际情况对模板进行一些修改即可
话不多说,上代码:
#include<iostream>
using namespace std;
#include<math.h>
#include<algorithm>
double get_x_ave(double a[])
{
double sum=0.0,av;
for(int i=0;i<6;i++)
{
sum+=a[i];
}
av=sum/6;
return av;
}
double get_xy_ave(double a[],double b[])
{
double sum=0.0,av;
for(int i=0;i<6;i++)
{
sum+=a[i]*b[i];
}
av=sum/6;
return av;
}
double get_x2_ave(double a[])
{
double sum=0.0,av;
for(int i=0;i<6;i++)
{
sum+=a[i]*a[i];
}
av=sum/6;
return av;
}
double get_sxx(double a[],double b)
{
double sum=0.0;
for(int i=0;i<6;i++)
{
sum+=pow(a[i]-b,2);
}
}
double get_sxy(double a[],double b[],double x,double y)
{
double sum=0.0;
for(int i=0;i<6;i++)
{
sum+=(a[i]-x)*(b[i]-y);
}
return sum;
}
int main()
{
double a[7],b[7];
double x,y,xy,x2,y2,sxx,syy,sxy;
for(int i=0;i<6;i++) cin>>a[i];
for(int i=0;i<6;i++) cin>>b[i];
x=get_x_ave(a);
y=get_x_ave(b);
xy=get_xy_ave(a,b);
x2=get_x2_ave(a);
y2=get_x2_ave(b);
sxx=get_sxx(a,x);
syy=get_sxx(b,y);
sxy=get_sxy(a,b,x,y);
double bb;
bb=(x*y-xy)/(x*x-x2);
double r;
r=(xy-x*y)/sqrt((x2-x*x)*(y2-y*y));
double rr;
rr=sxy/sqrt(sxx*syy);
double sb;
sb=sqrt(1/sxx)*sqrt((1-rr*rr)*syy/4);
cout<<"x="<<x<<endl;
cout<<"y="<<y<<endl;
cout<<"xy="<<xy<<endl;
cout<<"x2="<<x2<<endl;
cout<<"y2="<<y2<<endl;
cout<<"bb="<<bb<<endl;
cout<<"r="<<r<<endl;
cout<<"sxx="<<sxx<<endl;
cout<<"syy="<<syy<<endl;
cout<<"sxy="<<sxy<<endl;
cout<<"rr="<<rr<<endl;
cout<<"sb="<<sb<<endl;
return 0;
}