You are on page 1of 13

*CHOLESKY DECOMPOSITION*

#include <iostream>

#include <cmath>

#include <stdlib.h>

#include <conio.h>

#include <math.h>

using namespace std;

int main()

{int e, a=1, i=1, j=1, k=1, m=1, n=1;

static float x, z, STIFFNESS_MATRIX[100][100], LOW[100][100],

UP[100][100], s, t;

static float BB[100], XX[100];

cout.precision(4);

cout.setf(ios::fixed);

printf("PUNZALAN, CHRISTIAN JADE P. \n");

printf("BSCE / 162-0016 \n\n");

printf("TITLE: CHOLESKY DECOMPOSITION \n\n");///////

// printf("\td%d = %8.3f \n",i,y[i]);

///////////

printf("ENTER THE DIMENSION OF THE MATRIX:\n\t");

scanf("%d",&e);

system("CLS");

for(i=1; i<=e; i++)

{for(j=1; j<=e; j++)


{STIFFNESS_MATRIX[i][j]=0;}}for(i=1; i<=e; i++)

{for(j=1; j<=e+1; j++){printf("\nMatrix A =\n");for(m=1; m<=e+1; m++)

if (m<=e)

printf("\t\t\tx(%d)",m);

else

printf("\t\t= b\n\n");

for(m=1; m<=e; m++)

for(n=1; n<=e+1; n++)

if (n<=e)

printf("\t\t

%8.3f",STIFFNESS_MATRIX[m][n]);

else

printf("\t\t =

%8.3f",STIFFNESS_MATRIX[m][n]);
}

printf("\n");

printf("\n\t Enter the value of A( %d )( %d )

:\n\t\t",i,j);

scanf("%f",&STIFFNESS_MATRIX[i][j]);

system("CLS");

for(i=1; i<=e; i++)

for(j=1; j<=e; j++)

s=0;

if (j==1)

LOW[i][j]=STIFFNESS_MATRIX[i][j];

else if (j>i)

LOW[i][j]=0;

else
{

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

s=s+LOW[i][n]*UP[n][j];

LOW[i][j]=STIFFNESS_MATRIX[i][j]-s;

t=0;

if (i==1)

UP[i][j]=STIFFNESS_MATRIX[i][j]/LOW[i][i];

else if (i>j)

UP[i][j]=0;

else

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

t=(t+LOW[i][n]*UP[n][j]);

}
UP[i][j]=(STIFFNESS_MATRIX[i][j]-

t)/LOW[i][i];

printf("Lower Triangular Matrix LOW =\n");

for(i=1; i<=e; i++)

for(j=1; j<=e; j++)

printf("\t\t %8.3f",LOW[i][j]);

printf("\n");

printf("\nUpper Triangular Matrix UP =\n");

for(i=1; i<=e; i++)

for(j=1; j<=e; j++)

printf("\t\t %8.3f",UP[i][j]);

printf("\n");

printf("\n");
for (i=1; i<=e; i++)

x=0;

for(j=1; j<=e; j++)

x=x+(LOW[i][j]*BB[j]);

BB[i]=(STIFFNESS_MATRIX[i][e+1]-x)/LOW[i][i];

for (i=e; i>0; i--)

x=0;

for(j=e; j>0; j--)

x=x+(UP[i][j]*XX[j]);

XX[i]=(BB[i]-x)/UP[i][i];

printf("\tThe solution to the matrix:\n");

for (i=1; i<=e; i++)

{
printf("x(%d) = %8.3f \n",i,XX[i]);

} #include <iostream>

#include <cmath>

#include <stdlib.h>

#include <conio.h>

#include <math.h>

using namespace std;

int main()

int e, a=1, i=1, j=1, k=1, m=1, n=1;

static float x, z, STIFFNESS_MATRIX[100][100], LOW[100][100],

UP[100][100], s, t;

static float BB[100], XX[100];

cout.precision(4);

cout.setf(ios::fixed);

printf("PUNZALAN, CHRISTIAN JADE P. \n");

printf("BSCE / 162-0016 \n\n");

printf("TITLE: CHOLESKY DECOMPOSITION \n\n");

///////

// printf("\td%d = %8.3f \n",i,y[i]);

///////////
printf("ENTER THE DIMENSION OF THE MATRIX:\n\t");

scanf("%d",&e);

system("CLS");

for(i=1; i<=e; i++)

for(j=1; j<=e; j++)

STIFFNESS_MATRIX[i][j]=0;

for(i=1; i<=e; i++)

for(j=1; j<=e+1; j++)

printf("\nMatrix A =\n");

for(m=1; m<=e+1; m++)

if (m<=e)

printf("\t\t\tx(%d)",m);

else

printf("\t\t= b\n\n");

}
}

for(m=1; m<=e; m++)

for(n=1; n<=e+1; n++)

if (n<=e)

printf("\t\t

%8.3f",STIFFNESS_MATRIX[m][n]);

else

printf("\t\t =

%8.3f",STIFFNESS_MATRIX[m][n]);

printf("\n");

printf("\n\t Enter the value of A( %d )( %d )

:\n\t\t",i,j);

scanf("%f",&STIFFNESS_MATRIX[i][j]);

system("CLS");

for(i=1; i<=e; i++)

{
for(j=1; j<=e; j++)

s=0;

if (j==1)

LOW[i][j]=STIFFNESS_MATRIX[i][j];

else if (j>i)

LOW[i][j]=0;

else

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

s=s+LOW[i][n]*UP[n][j];

LOW[i][j]=STIFFNESS_MATRIX[i][j]-s;

t=0;
if (i==1)

UP[i][j]=STIFFNESS_MATRIX[i][j]/LOW[i][i];

else if (i>j)

UP[i][j]=0;

else

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

t=(t+LOW[i][n]*UP[n][j]);

UP[i][j]=(STIFFNESS_MATRIX[i][j]-

t)/LOW[i][i];

printf("Lower Triangular Matrix LOW =\n");

for(i=1; i<=e; i++)

for(j=1; j<=e; j++)

{
printf("\t\t %8.3f",LOW[i][j]);

printf("\n");

printf("\nUpper Triangular Matrix UP =\n");

for(i=1; i<=e; i++)

for(j=1; j<=e; j++)

printf("\t\t %8.3f",UP[i][j]);

printf("\n");

printf("\n");

for (i=1; i<=e; i++)

x=0;

for(j=1; j<=e; j++)

x=x+(LOW[i][j]*BB[j]);

BB[i]=(STIFFNESS_MATRIX[i][e+1]-x)/LOW[i][i];

}
for (i=e; i>0; i--)

x=0;

for(j=e; j>0; j--)

x=x+(UP[i][j]*XX[j]);

XX[i]=(BB[i]-x)/UP[i][i];

printf("\tThe solution to the matrix:\n");

for (i=1; i<=e; i++)

printf("x(%d) = %8.3f \n",i,XX[i]);

You might also like