rootUser

curve fitting - 2nd degree polynomial (own)

Aug 6th, 2016
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.66 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<math.h>
  3.  
  4. double listX[100],listY[100];
  5. double sumOfSquare[100];
  6. double sumOfCube[100];
  7. double sumOfPower4[100];
  8. double sumOfYX[100];
  9. double sumOfYXsquare[100];
  10. double matrix[100][100];
  11. double a[100];
  12.  
  13. int totatlData;
  14.  
  15. void inputData();
  16. void printList(double*);
  17. double sumOfList(double*);
  18. void makeSumOfSquareList(double*);
  19. void makeSumOfCubeList(double*);
  20. void makeSumOfPower4List(double*);
  21. void makeSumOfYXList(double*,double*);
  22. void makeSumOfYXSquareList(double*,double*);
  23. void makematrix();
  24. void printmatrix();
  25. void gjm();
  26. void polynomial();
  27.  
  28. int main(void)
  29. {
  30.     inputData();
  31.     makematrix();
  32.     printmatrix();
  33.     gjm();
  34.     polynomial();
  35.     return 0;
  36. }
  37.  
  38. void inputData()
  39. {
  40.     printf("How many (x,y) inputs : ");
  41.     scanf("%d",&totatlData);
  42.     int i;
  43.     for(i=1; i<=totatlData; i++)
  44.     {
  45.         printf("Enter x%d : ",i);
  46.         scanf("%lf",&listX[i]);
  47.         printf("Enter y%d : ",i);
  48.         scanf("%lf",&listY[i]);
  49.     }
  50. }
  51.  
  52. void printmatrix()
  53. {
  54.     int i,j;
  55.     for(i=1; i<=3; i++)
  56.     {
  57.         for(j=1; j<=3+1; j++)
  58.         {
  59.             printf("%lf\t",matrix[i][j]);
  60.         }
  61.         printf("\n");
  62.     }
  63. }
  64.  
  65. void printList(double x[])
  66. {
  67.     int i;
  68.     for(i=1; i<=totatlData; i++)
  69.     {
  70.         printf("Item %d : %lf\n",i,x[i]);
  71.     }
  72.     printf("\n");
  73. }
  74.  
  75. double sumOfList(double x[])
  76. {
  77.     int i;
  78.     double sum = 0;
  79.     for(i=1; i<=totatlData; i++)
  80.     {
  81.         sum=sum+x[i];
  82.     }
  83.     return sum;
  84. }
  85. void makeSumOfSquareList(double x[])
  86. {
  87.     int i;
  88.     for(i=1; i<=totatlData; i++)
  89.     {
  90.         sumOfSquare[i] = pow(x[i],2);
  91.     }
  92. }
  93. void makeSumOfCubeList(double x[])
  94. {
  95.     int i;
  96.     for(i=1; i<=totatlData; i++)
  97.     {
  98.         sumOfCube[i] = pow(x[i],3);
  99.     }
  100. }
  101. void makeSumOfPower4List(double x[])
  102. {
  103.     int i;
  104.     for(i=1; i<=totatlData; i++)
  105.     {
  106.         sumOfPower4[i] = pow(x[i],4);
  107.     }
  108. }
  109. void makeSumOfYXList(double y[],double x[])
  110. {
  111.     int i;
  112.     for(i=1; i<=totatlData; i++)
  113.     {
  114.         sumOfYX[i] = y[i]*x[i];
  115.     }
  116. }
  117. void makeSumOfYXSquareList(double y[],double x[])
  118. {
  119.     int i;
  120.     for(i=1; i<=totatlData; i++)
  121.     {
  122.         sumOfYXsquare[i] = y[i]*pow(x[i],2);
  123.     }
  124. }
  125. void makematrix()
  126. {
  127.     makeSumOfSquareList(listX);
  128.     makeSumOfCubeList(listX);
  129.     makeSumOfPower4List(listX);
  130.     makeSumOfYXList(listY,listX);
  131.     makeSumOfYXSquareList(listY,listX);
  132.     matrix[1][1]=totatlData;
  133.     matrix[1][2]=sumOfList(listX);
  134.     matrix[1][3]=sumOfList(sumOfSquare);
  135.     matrix[1][4]=sumOfList(listY);
  136.     matrix[2][1]=sumOfList(listX);
  137.     matrix[2][2]=sumOfList(sumOfSquare);
  138.     matrix[2][3]=sumOfList(sumOfCube);
  139.     matrix[2][4]=sumOfList(sumOfYX);
  140.     matrix[3][1]=sumOfList(sumOfSquare);
  141.     matrix[3][2]=sumOfList(sumOfCube);
  142.     matrix[3][3]=sumOfList(sumOfPower4);
  143.     matrix[3][4]=sumOfList(sumOfYXsquare);
  144. }
  145.  
  146. void gjm()
  147. {
  148.     //printmatrix();
  149.     int i,j,k,n=3;
  150.     double pivotSafe=0,pivotOwn=0;
  151.     for(k=1; k<=n; k++)
  152.     {
  153.         for(i=1; i<=n; i++)
  154.         {
  155.             if(i!=k)
  156.             {
  157.                 pivotSafe = matrix[k][k];
  158.                 pivotOwn = matrix[i][k];
  159.                 for(j=1; j<=n+1; j++)
  160.                 {
  161.                     matrix[i][j]=(pivotSafe*matrix[i][j])-(pivotOwn*matrix[k][j]);
  162.                 }
  163.             }
  164.         }
  165.     }
  166.     //printmatrix();
  167.     for(i=1; i<=n; i++)
  168.     {
  169.         double pivot = matrix[i][i];
  170.         for(j=1; j<=n+1; j++)
  171.         {
  172.             matrix[i][j]=matrix[i][j]/pivot;
  173.         }
  174.     }
  175.     //printmatrix();
  176. }
  177.  
  178. void polynomial()
  179. {
  180.     int i;
  181.     printf("y=%lfx+%lfx+%lfx^2",matrix[1][4],matrix[2][4],matrix[3][4]);
  182. }
Add Comment
Please, Sign In to add comment