Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I need help making a C program that uses Linear Least-Squares Fit to carry out t

ID: 3688556 • Letter: I

Question

I need help making a C program that uses Linear Least-Squares Fit to carry out the following:

Linear Least-Squares is an attempt to find a straight line that best represents a set of data points. It is a very common problem in modeling and statistics - you have a large set of observed data points, and you want to be able to describe it with a single line that "fits" the data as well as possible. You are given data consisting of N ordered pairs (x_i, V_j) with 1 lessthanorequalto i lessthanorequalto N. One measure of the "best fit" line to this dataset is the line that minimizes the sum of the square of the residues to the model y = mx + b. The residue at each point is given by: r_i (mx_i + b) - y_i The parameters of the model m and b are determined by minimizing the quantity: S^2 sigma^N_i=1 r_i The resulting model parameters m and b are given by the formulas: m = - / - ^2; b = - / - ^2 Where the angle-bracket expressions represent the mean (average) of the quantity enclosed: = 1/N sigma^n_i=1 f(x_i,y_i) Write a program that carries out the following: 1. Data Entry Step: reads N ordered pairs of data (x_iV_j) into a pair of arrays x and y. Query the user for a value for N in advance: N will not be greater than 100. 2. Analysis Step: using the obtained data and the formulas above, calculates the parameters m and b of the least-squares fit to the data and prints those values to the screen in an appropriate way. 3. Predictive Step: reads in a series of x values (number not known in advance, but no more than 100 values) until the user enters the sentinel value -100000. Then prints out a table of values for the least-fit line y=mx+b m two tab-separated columns labeled x and y.

Explanation / Answer

Code:

#include<stdio.h>

#include<math.h>

#include<conio.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 ");

     scanf("%d",&n);

     printf("Enter the ordered pairs ");

     for(i=0;i<n;i++)

     {

          scanf("%d%d",&x[i],&y[i]);

          printf(" ");

     }

     printf("The ordered pairs are ");

     for(i=0;i<n;i++)

     {

          printf("%2d%2d",x[i],y[i]);

          printf(" ");

     }

     //Sum of values in x array

     for(i=0;i<n;i++)

     {

          X=X+x[i];

     }

     //Sum of square of values in x array

     for(i=0;i<n;i++)

     {

          xx=xx+x[i]*x[i];

     }

     //Sum of product of values of x and y array

     for(i=0;i<n;i++)

     {

          xy=xy+x[i]*y[i];

     }

     //Sum of values in y array

     for(i=0;i<n;i++)

     {

          Y=Y+y[i];

     }

     bnum=(xx*Y)-(X*xy);

     bden=(n*xx)-(X*X);

     // y intercept

     b=bnum/bden;

     printf("The Y intercept b = %.2f ",b);

     mnum=(n*xy)-(X*Y);

     mden=bden;

     //slope

     m=mnum/mden;

     printf("The slope m = %.2f ",m);

     i=0;

    // reading set of x values

     while(sent!=100000)

     {

          printf("Enter the x values ");

          scanf("%d",&a[i]);

          i=i++;

          printf("If need to stop enter 100000 or if need to                                            continue enter any number ");

          scanf("%d",&sent);

     }

     N=i;

     printf("x   Y ");

     for(i=0;i<N;i++)

     {

          Yn=(m*a[i])+b;

          printf("%3d%3d ",a[i],Yn);

     }

     getch();

     return 0;

}                 

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote