Question: PLEASE check if this code it right /* Solution of Linear Equations - LU Decomposition Method */ #include #include #define M 10 /* maximum row

PLEASE check if this code it right

/* Solution of Linear Equations - LU Decomposition Method */

#include

#include

#define M 10 /* maximum row */

#define N 10 /* maximum column */

void print_matrix1(int m, double matrix[]);

void print_matrix2(int m, int n, double matrix[][N]);

int lu_decomposition(int m, int n, double a[][N], double x[]);

void main(){

double a[M][N] = {{5.5, 3.6, 4.6, 13}, {2.3,5.5,2,15.2}, {10,3,7,14.6}};

double x[M];

int n_row = 3, n_column = 4, return_val;

printf("matrix A_C: ");

print_matrix2( n_row, n_column, a );

return_val = lu_decomposition( n_row, n_column, a, x );

if (return_val) {

printf( "Can not find the solution !!! " ); }

else {

printf("matrix X: ");

print_matrix1( n_row, x ); } }

int lu_decomposition(int m, int n, double a[][N], double x[]) {

int i, j, k;

double l[M][N], u[M][N], e[M], sum;

for( i = 0; i < m; i++ ) {

for( j = 0; j < n-1; j++ ) {

l[i][j] = 0.0;

u[i][j] = 0.0;

if ( j == i ) u[i][j] = 1.0; } }

/*** LU decomposition ***/

for( j = 0; j < n-1; j++ ) {

for( i = j; i < m; i++ ) {

sum = 0;

for( k = 0; k < j; k++ ) {

sum += l[i][k] * u[k][j]; }

l[i][j] = a[i][j] - sum; }

for( i = j+1; i < m; i++ ){

sum = 0;

for( k = 0; k < j; k++ ) {

sum += l[j][k] * u[k][i]; }

u[j][i] = (a[j][i] - sum) / l[j][j]; } }

printf("matrix L: ");

print_matrix2( m, m, l );

printf("matrix U: ");

print_matrix2( m, m, u );

/*** forward substitution ***/

e[0] = a[0][n-1] / l[0][0];

for( i = 1; i < n-1; i++ ) {

sum = 0;

for( j = 0; j < i; j++ ) {

sum += l[i][j] * e[j]; }

e[i] = (a[i][n-1] - sum) / l[i][i]; }

printf("matrix E: ");

print_matrix1( m, e );

/*** back substitution ***/

x[m-1] = e[m-1];

for( i = m-2; i >= 0; i-- ) {

sum = 0;

for( j = i+1; j < m; j++ ) {

sum += u[i][j] * x[j]; }

x[i] = e[i] - sum; }

return 0; }

void print_matrix1(int m, double matrix[])

{

int i;

for( i = 0; i < m; i++ ) {

printf("%12.4f", matrix[i]);

printf(" "); }

printf(" "); }

void print_matrix2(int m, int n, double matrix[][N]) {

int i, j;

for( i = 0; i < m; i++ ) {

for( j = 0; j < n; j++ ) {

printf("%12.4f", matrix[i][j]); }

printf(" "); }

printf(" "); }

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!