C程序预测线性最小二乘拟合的输入

时间:2016-04-14 17:27:40

标签: c

任何人都可以帮我修复我的C代码吗?

我已经制定了线性最小二乘拟合公式以适合用户输入的数据。

我遇到的问题是我的程序读取了一系列x值(其中数字已知,但不超过100个值),直到用户输入标记值-100000。然后在两个制表符分隔中打印出最小拟合线y = mx + b的值表。我还没学会使用getch()函数,所以我不能使用标题来执行此操作。

这是我到目前为止所提出的(我正在添加整个代码):

#include<stdio.h>
#include<math.h>
int main()
{
    int x[30],X=0,xx=0,xy=0,y[30],Y=0,n,
    bnum,bden,mnum,mden,a[30],N,Yn;

 float b=0.0,m=0.0;
 int i=0,sent=0;
 printf("Enter the number of ordered pairs\n");
 scanf("%d",&n);
 printf("Enter the ordered pairs\n");
 for(i=0;i<n;i++)
 {
      scanf("%d%d",&x[i],&y[i]);
      printf("\n");
 }
 printf("The ordered pairs are \n");
 for(i=0;i<n;i++)
 {
     printf("%2d%2d",x[i],y[i]);
     printf("\n");
 }

 for(i=0;i<n;i++)
 {
      X=X+x[i];         //Sum of values in x array
      xx=xx+x[i]*x[i];  //Sum of square of values in x array
      xy=xy+x[i]*y[i];  //Sum of product of values of x and y array
      Y=Y+y[i];         //Sum of values in y array
 }
 bnum=(xx*Y)-(X*xy);
 bden=(n*xx)-(X*X);

 // y intercept
 b=bnum/bden;
 printf("The Y intercept b = %.2f \n",b);
 mnum=(n*xy)-(X*Y);
 mden=bden;

 //slope
 m=mnum/mden;
 printf("The slope m = %.2f \n",m);
 i=0;

// reading set of x values
 while(sent!=-100000)
 {
      printf("Enter the x values\n");
      scanf("%d",&a[i]);
      i=i++;
      printf("If done enter -100000 or enter another number to continue\n");
      scanf("%d",&sent);
 }
 N=i;
  printf("x y\n");
 for(i=0;i<N;i++)
 {
      Yn=(m*a[i])+b;
      printf("%3d%3d\n",a[i],Yn);
 }
 return 0;

}

0 个答案:

没有答案