Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #define TAM 3
- void gerarMatriz(float matriz_L[TAM][TAM],float matriz_U[TAM][TAM],float matriz_A[TAM][TAM]);
- void imprimirMatriz(float matriz[TAM][TAM]);
- void calcularInferior(float matriz_L[TAM][TAM],float b[TAM],float y[TAM]);
- void calcularSuperior(float matriz_U[TAM][TAM],float x[TAM],float y[TAM]);
- int main(){
- float matriz_L[TAM][TAM],matriz_U[TAM][TAM];
- float matriz_A[TAM][TAM]={3,2,4,1,1,2,4,3,-2};
- float b[TAM]={1,2,3},x[TAM],y[TAM]={0,0,0};
- printf("\n\n-----MATRIZ A-----\n");
- imprimirMatriz(matriz_A);
- gerarMatriz(matriz_L,matriz_U,matriz_A);
- printf("\n\n-----MATRIZ L-----\n");
- imprimirMatriz(matriz_L);
- printf("\n\n-----MATRIZ U-----\n");
- imprimirMatriz(matriz_U);
- calcularInferior(matriz_L,b,y);
- calcularSuperior(matriz_U,x,y);
- printf("\n\n\nResultado do sistema: ");
- for(int i=0;i<TAM;i++){
- printf("%.2f ",x[i]);
- }
- }
- void gerarMatriz(float matriz_L[TAM][TAM],float matriz_U[TAM][TAM],float matriz_A[TAM][TAM]){
- int i,j,k,p;
- float soma;
- //Preenchimento da matriz L
- for(i=TAM-1;i>=0;i--){
- for(j=TAM-1;j<i;j--){
- matriz_L[i][j]=0;
- }
- }
- //preenchimento da matriz U
- for(i=0;i<TAM;i++){
- for(j=0;j<i;j++){
- matriz_U[i][j]=0;
- }
- }
- for(p=0;p<TAM;p++){
- matriz_L[p][p]=1;
- for(j=p;j<TAM;j++){
- soma=0;
- for(k=0;k<p;k++){
- soma+=(matriz_L[p][k]*matriz_U[k][j]);
- }
- matriz_U[p][j]=matriz_A[p][j]-soma;
- }
- for(i=p+1;i<TAM;i++){
- soma=0;
- for(k=0;k<p;k++){
- soma+=matriz_L[i][k]*matriz_U[k][p];
- }
- matriz_L[i][p]=(1/matriz_U[p][p])*(matriz_A[i][p]-soma);
- }
- }
- }
- void calcularInferior(float matriz_L[TAM][TAM],float b[TAM],float y[TAM]){
- float soma=0;
- for(int i=0;i<TAM;i++){
- for(int j=0;j<i;j++){
- soma+=(matriz_L[i][j]*y[j]);
- }
- y[i]=(b[i]-(soma))/matriz_L[i][i];
- soma=0;
- }
- }
- void calcularSuperior(float matriz_U[TAM][TAM],float x[TAM],float y[TAM]){
- int i, j;
- float soma=0;
- for (i=TAM-1;i>=0;i--){
- for (j=i+1;j<TAM;j++){
- soma+=(matriz_U[i][j]*x[j]);
- }
- x[i]=(y[i]-soma)/matriz_U[i][i];
- }
- }
- void imprimirMatriz(float matriz[TAM][TAM]){
- for(int i=0;i<TAM;i++){
- for(int j=0;j<TAM;j++){
- printf("%.2f ",matriz[i][j]);
- }
- printf("\n");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement