Calculo determinante

Disponível somente no TrabalhosFeitos
  • Páginas : 2 (385 palavras )
  • Download(s) : 0
  • Publicado : 1 de outubro de 2012
Ler documento completo
Amostra do texto
Programa DeterminanteMatrizN;
Inicio;
{ Definição de Variáveis e Tipos Globais }
Tipo Mat = Matriz[1..n,1..n] de Inteiros;
Mat: M;
Inteiro: Det, n, x, y;
{ Modulo para Calculo de Determinantede Matriz Quadrada de ordem N}
Modulo Determinante(Inteiro: Det, n; Matriz[1..n,1..n] de Inteiros: M; Inteiro: L, C;);
Inicio;
{ Definição de Variáveis Locais }
Tipo Mat = Matriz[1..n-1,1..n-1] deinteiros;
Tipo Vet = vetor[1..n] de inteiros;
Vet: D1, D2;
Mat: MA;
Inteiro: X1, X2, Y1, Y2, Det2, Cof;
Inteiro: Det1, Det2, x, y, z, w, n;
Escolha
Caso n = 1: { Determinante Matriz ordem 1}Det M[1,1];
Caso n>1 e n<4: { Determinante Matriz ordem 2 ou 3}
Det1 0;
Det2 0;
Para x = 0 até n-1
D1[x+1] 1;
D2[x+1] 1;
Para y = 1 até n
z x + y;
Se ( z > n ) então { Secoluna > n }
z z – n; { pega a partir da col 1 }
FimSe;
D1[x+1] D1[x+1] * M[y,z]; { Diagonal Principal }
w n – z + 1;
D2[x+1] D2[x+1] * M[y,w]; { Diagonal Secundária }
FimPara;
Det1Det1 + D1[x+1]; { Diagonal Principal }
Det2 Det2 + D2[x+1]; { Diagonal Secundária }
FimPara;
Det Det1 – Det2;
Caso Contrário: { Determinante Matriz ordem > 3}
Se L > 0 então { Reduz amatriz ... }
X2 0;
Para X1 = 1 até n
X2 X2 + 1;
Se X1 <> L então { ... tirando a linha L ... }
Y2 0;
Para Y1 = 1 até n
Y2 Y2 + 1;
Se Y2 <> C então { ... e a coluna C ... }MA[X2, Y2] M[X1,Y1];
FimSe;
FimPara;
FimSe;
FimPara;
d n – 1; { ... e diminui a ordem da matriz. }
Senão { para a primeira vez }
MA M;
d n;
FimSe;
Det 0; { Calcula Determinante porLaplace }
Para X2= 1 até d
Determinante(Det2, d, MA, 1, X2); { Det. da matriz reduzida}
Cof POT(-1,1+X2) * Det2; { Calculo do Cofator }
Det Det + M[1,X2] * Cof; { Teorema de Laplace }FimPara;
FimEscolha;
Fim;
{ Programa Principal, Carrega a Matriz e Calcula o Determinante }
{ Dimensão da matriz }
Leia(n);
{ Carrega a matriz }
Para x = 1 até n
Para y = 1 até n
Leia(M[x,y]);...
tracking img