Hi,
I have wrote a program to do multiple linear regression (form the matrix ) and solve the relevant matrix using Gaussian Elimination,Unfortunately it is not running and once I get it to run it is gives me the error stating det=0.
Please have a look and let me know how to fix it.

``````// Multiple Linear Regression

//#include<stdio.h>
//#include<stdlib.h>
//#include<math.h>

//#define limit 10
//#define Max  20

//void main()

//{
int i;                        //Loop counter
int N;                         //Number of data points
double X1[Max];               //X1 values presented by matrix elements
double X2[Max];               //X2 values presented by matrix elements
double Y[Max];               //Y values presented by matrix elements
double SumX1;                  //sum Value of X1
double SumX2;                  //Sum Value of X2
double SumX1X1;                 //Sum Value of X1*X1
double SumX1X2;                 //Sum Value of X1*X2
double SumX2X2;                 //Sum Value of X2*X2
double SumY;                  //sum Value Y
double SumX1Y;                 //Sum Value of Y*X1
double SumX2Y;                 //Sum Value of Y*X2
int K, P, C, J;                  //Loop Counters
double M[3][4];                  //Gaussian Input

int    Row[Max];                 //Pointer Vector
double a[Max];                   //Unknown Vector
double SUM, Z;
int  Pivot;

// printf("Enter Number of Data points,It should be less than %d :\n",Max);
// scanf_s("%d",&N);

// for(i = 1; i <= N; i++)
//{
printf("For Data Point Number %d ,Enter values of X1,X2 and Y seperated by comma.\n",i);
scanf_s("%lf,%1f,%1f", &X1[i-1],&X2[i-1],&Y[i-1]);
}
//Calculating Sum X1
// SumX1 = 0.0;     //Setting the initial value

//for(i = 1; i <= N; i++) SumX1 = SumX1 + (X1[i-1]);

//Calculating Sum X2

//SumX2 = 0.0;    //Setting the initial value
//for(i = 1; i <= N; i++) SumX2 = SumX2 + (X2[i-1]) ;

//Calculating SumY

//SumY = 0.0;   // Setting the initial Value
//for(i = 1; i <= N; i++) SumY = SumY + (Y[i-1]);

//Calculating SumX1^2

//SumX1X1 = 0.0; //Setting the initial Value
// for(i = 1; i <= N; i++) SumX1X1 = SumX1X1 +( (X1[i-1] ) * (X1[i-1] ) );

//Calculating SumX2^2

//SumX2X2 = 0.0; //Setting the initial Value
//for(i = 1; i <= N; i++) SumX2X2 = SumX2X2 +( (X2[i-1] ) * (X2[i-1] ) );

//Calculating SumX1.X2

//SumX1X2 = 0.0; //Setting the initial Value
//for(i = 1; i <= N; i++) SumX1X2 = SumX1X2 +( (X1[i-1] ) * (X2[i-1] ) );

//Calculating SumX2.Y

//SumX1Y = 0.0; //Setting the initial Value
// for(i = 1; i <= N; i++) SumX1Y = SumX1Y +( (X1[i-1] ) * (Y[i-1] ) );

//Calculating SumX1.Y

//SumX2Y = 0.0; //Setting the initial Value
// for(i = 1; i <= N; i++) SumX2Y = SumX2Y +( (X2[i-1] ) * (Y[i-1] ) );

//Forming the Gaussian Input Matrix

//M[0][0] = N;
//M[0][1] = SumX1;
//M[0][2] = SumX2;
//M[0][3] = SumY;
//M[1][0] = SumX1;
//M[1][1] = SumX1X1;
//M[1][2] = SumX1X2;
//M[1][3] = SumX1Y;
//M[2][0] = SumX2;
//M[2][1] = SumX1X2;
//M[2][2] = SumX2X2;
//M[2][3] = SumX2Y;

//Forming Pointer Vector
//for (J = 1; J<= 3; J++) Row[J-1] = J - 1;

//Upper Triangular Matrix

//for (P = 1; P <= 2; P++)
{

//Pivoting

//for (K = P + 1; K <= 3; K++)
{
if ( fabs(M[Row[K-1]][P-1]) > fabs(M[Row[P-1]][P-1]) )
{

Pivot      = Row[P-1];
Row[P-1] = Row[K-1];
Row[K-1] = Pivot;
}
}

//for (K = P + 1; K <= 3; K++)
{
Z = M[Row[K-1]][P-1] / M[Row[P-1]][P-1];

//for (C = P + 1; C <= 4; C++)
{
M[Row[K-1]][C-1] -= Z * M[Row[P-1]][C-1];
}
}

}

// if( M[Row[2]][2] == 0)
{
//  printf("Matrix determinant is Zero,Failure to apply Gaussian Elimination Method !\n");
exit(1);
}

// Back substitution
//a[2] = M[Row[2]][3] / M[Row[2]][2];

// for (K = 2; K >= 1; K--)
{
SUM = 0;
for (C = K + 1; C <= 3; C++)
{
SUM += M[Row[K-1]][C-1] * a[C-1];
}

a[K-1] = ( M[Row[K-1]][3] - SUM) / M[Row[K-1]][K-1];

}  // End of back substitution

//for( K = 1; K <= 3; K++)  printf("Final answer for a[%d] = %lf\n", K, a[K-1]);
}``````

You're going to have to write out the error messages because most people don't know the error codes off the top of their heads.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.