线性回归的代码

直接上代码

#include <stdio.h>
int main(){
int n;
printf("请在第一行输入数据数,第二行开始输入数据的横坐标和纵坐标,之间用空格隔开\n");
scanf("%d",&n);
float a[n];
float b[n];
float av=0;
float bv=0;
float a2t=0;
float abt=0;
float k;
float m;
float c,d;
int t=1;
for(t=1;t<=n;t++){
scanf("%f %f",&a[t-1],&b[t-1]);
//printf("%f %f\n",a[t-1],b[t-1]);
}
for(t=1;t<=n;t++){
av=av+a[t-1];
bv=bv+b[t-1];
a2t=a2t+(a[t-1])*(a[t-1]);
abt=abt+(a[t-1])*(b[t-1]);
//printf("%f %f %f %f\n",av,bv,a2t,abt);
}
//printf("%f %f %f %f\n",av,bv,a2t,abt);
av=av/n;
bv=bv/n;
c=a2t-n*av*av;
d=abt-n*av*bv;
k=d/c;
m=bv-k*av;
//printf("%f %f\n",k,m);
if(m>=0){
if(m==0){
if(k==1){
printf("y=x");
}
if(k==-1){
printf("y=-x");
}
if(k!=1&k!=-1){
printf("y=%fx",k);
}
}else{
if(k==1){
printf("y=x+%f",m);
}
if(k==-1){
printf("y=-x+%f",m);
}
if(k!=1&k!=-1){
printf("y=%fx+%f",k,m);
}
}
}else{
if(k==1){
printf("y=x%f",m);
}
if(k==-1){
printf("y=-x%f",m);
}
if(k!=1&k!=-1){
printf("y=%fx%f",k,m);
}
}
return 0;
}

//2.3 3.4
//3.4 4.9
//4 7
//5 8
//6 9.7

 

posted @ 2022-08-05 22:06  ZXN049  阅读(95)  评论(0)    收藏  举报