Ir ao conteúdo
  • Cadastre-se

Arthur Santos

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

0
  1. Então, pessoal, tentei fazer o código da Fatoração LU, um método numérico utilizado para resolver sistemas de equações lineares. O princípio do método está em dividir a matriz dos coeficientes em duas, obtendo uma matriz triangular superior e outra inferior. Até aí tudo bem, acontece que meu programa volta valores absurdos. Abaixo o código: #include<stdio.h> #include<stdlib.h> #include<math.h> int main() { int i,j,k,r; float a[5][5]; float b[5]; float c[5]; float m,aux,soma; float y[5]; float x[5]; int p[5]; float pv; /* Receber valores da matriz*/ for(i=0;i<5;i++){ for(j=0;j<5;j++){ a[j]=0; } } a[0][0]=3; a[0][2]=-1; a[1][0]=-1; a[1][1]=1; a[2][1]=-2; a[2][2]=9; a[3][1]=1; a[3][2]=6; a[3][3]=-9; a[3][4]=2; a[4][0]=5; a[4][1]=1; a[4][4]=-6; b[0]=40; b[1]=0; b[2]=350; b[3]=0; b[4]=0; /* COMEÇO DO ALGORITMO */ for(i=0;i<5;i++) { p=i; } for(k=0;k<4;k++) { pv=abs(a[k][k]); r=k; for(i=k+1;i<5;i++) { if(abs(a[k])>pv) { pv=abs(a[k]); r=i; } } if(pv==0) { printf("A matriz é singular"); return 0; } if(r=!k) { aux=p[k]; p[k]=p[r]; p[r]=aux; for(j=0;j<5;j++) { aux=a[k][j]; a[k][j]=a[r][j]; a[r][j]=aux; } } for(i=k+1;i<5;i++) { m=(a[k])/a[k][k]; a[k]=m; for(j=k+1;j<5;j++) { a[j]=a[j]-m*(a[k][j]); } } } /* RESOLUÇÃO DOS SISTEMAS TRIANGULARES */ for(i=0;i<5;i++) // c= Pb // { r=p; c=b[r]; } for(i=0;i<5;i++) { soma=0; for(j=0;j<(i-1);j++) { soma=soma+(a[j])*(y[j]); y=c-soma; } } for(i=4;i>=0;i--) { soma=0; for(j=i+1;j<5;j++) { soma=soma+(a[j])*x[j]; x=(y-soma)/a; } } /* IMPRIME OS VALORES X */ for(i=0;i<5;i++) { printf("\n %5.2f \n",x); } return 0; }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...