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

PLEASE check if this code it right /* Solution of Linear Equations - LU Decompos

ID: 3716276 • Letter: P

Question

PLEASE check if this code it right

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

#include <stdio.h>

#include <math.h>

#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(" "); }

Explanation / Answer

Output of above code is:-

matrix A_C:
5.5000 3.6000 4.6000 13.0000
2.3000 5.5000 2.0000 15.2000
10.0000 3.0000 7.0000 14.6000

matrix L:
5.5000 0.0000 0.0000
2.3000 3.9945 0.0000
10.0000 -3.5455 -1.2959

matrix U:
1.0000 0.6545 0.8364
0.0000 1.0000 0.0191
0.0000 0.0000 1.0000

matrix E:
2.3636
2.4442
0.2858

matrix X:
0.5283
2.4388
0.2858

Note:- This code is partially correct.

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