Buscar

Alguém pode me fornecer um programa que calcule o determinante de uma matriz nxn?

O programa deve ser em c++.

💡 7 Respostas

User badge image

Alessandro Trevisan

Cara! 
esse site aqui faz tudo que você imaginar com matrix e é de facil inserção de dados.

Vou listar algumas coisas q ele faz.

->MATRIZ TRANSPOSTA 

->DETERMINANTE

->MATRIZ INVERSA

->DECOMPOSIÇÃO LU 

->DECOMPOSIÇÃO LQ

->DECOMPOSIÇÃO DE CHOLESKY

->ADIÇÃO /SUBTRAÇÃO / MULTIPLICAÇÃO

->RESOLVE SISTEMAS LINEARES

-> E MAIS...
->>>>>>>>>>>>>>>http://www.bluebit.gr/matrix-calculator/ <<<<<<<<<---

 

 

7
Dislike0
User badge image

Emanoel Cabral

Wolphan alpha

0
Dislike0
User badge image

Jonata Matias de Araújo

Tenho um arquivo no Code Blocks, não sei se pode enviar arquivo então vou colar aqui em baixo.

......................................................................................................

#include<iostream>

using namespace std;

// Programa para calcular o determinante de uma matriz 3x3

int main(){
int A[3][3],SDP,SDS,prod,lin,col,Aexp[3][5],det;

/*
Uma forma de calcular o determinante é utilizar a regra de sarrus. Expande-se a matriz original copiando-se as duas primeiras colunas ao final da matriz.
Dessa forma, o cálculo é realizado apenas multiplicando-se os elementos da diagonal principal da matriz e suas paralelas e os elementos da diagonal secundária
e suas paralelas e subtraindo as duas como se segue:

1 2 3 1 2
A = 4 5 6 4 5
7 8 9 7 8

diagonal_principal_paralelas =
A[0][0] * A[1][1] * A[2][2] +
A[0][1] * A[1][2] * A[2][3] +
A[0][2] * A[1][3] * A[2][4]

diagonal_secundaria_paralelas =
A[0][2] * A[1][1] * A[2][0] +
A[0][3] * A[1][2] * A[2][1] +
A[0][4] * A[1][3] * A[2][2] +

det = diagonal_principal_paralelas - diagonal_secundaria_paralelas;
*/

// Pedindo ao usuário que digite os elementos da matriz A.

cout << "Digite os elementos da matriz: ";

for(int l=0;l<3;l++){
for(int c=0;c<3;c++){
cin >> A[l][c];
}
}

// Expandindo a matriz (para tal foi declarada uma matriz Aexp, que é a matriz A expandida)

for(int l=0;l<3;l++){
for(int c=0;c<3;c++){
Aexp[l][c] = A[l][c];
if(c < 2){ // se as colunas que estão sendo varridas forem as duas primeiras, copia elas para as duas ultimas da matriz
Aexp[l][c+3] = A[l][c];
}
}
}

// Exibindo a matriz A

cout << "A matriz digitada eh:\n";

for(int l=0;l<3;l++){
for(int c=0;c<3;c++){
cout << A[l][c] << " ";
}
cout << endl;
}

// Exibindo a matriz expandida

cout << "\nSua forma expandida eh:\n";

for(int l=0;l<3;l++){
for(int c=0;c<5;c++){
cout << Aexp[l][c] << " ";
}
cout << endl;
}

// calculando o somatorio da multiplicação dos elementos
// da diagonal principal

lin = col = 0;
SDP = 0;
for(int s=0;s<3;s++){
prod = 1;
for(int e=0;e<3;e++){ // produtorio dos elementos
prod = prod * Aexp[lin+e][col+e];
}
SDP = SDP + prod; // somatório dos produtorios
col++;
}

cout << "\nO somatorio da diagonal principal e suas paralelas na matriz expandida eh: " << SDP << endl;

// calculando o somatorio da multiplicação dos elementos
// da diagonal secundaria

lin = 0;
col = 2;
SDS = 0;
for(int s=0;s<3;s++){
prod = 1;
for(int e=0;e<3;e++){
prod = prod * Aexp[lin+e][col-e];
}
SDS = SDS + prod;
col++;
}

cout << "O somatorio da diagonal secundaria e suas paralelas na matriz expandida eh: " << SDS << endl;

det = SDP-SDS;
cout << "\nO determinante eh (utilizando a matriz expandida de A): " << det << endl; // exibindo o determinante

/* Forma alternativa
Como explicado em sala de aula, existe uma outra forma de realizar o cálculo do determinate sem
a utilização da matriz expandida. Para tal, é necessário fazer o programa calcular o produtorio
com os elementos corretos. Analisando o explicado no início do programa tem-se que:

O elemento A[2][3] = A[2][0]
O elemento A[1][3] = A[1][0]
O elemento A[2][4] = A[2][1]

Mas na matriz original A não existem as colunas 3 e 4. Elas são respectivamente cópias das colunas 0 e 1.
Então para resolver esse incoveniente basta fazer com que o programa acesse essas colunas em vez das colunas
3 e 4. Para tal, basta realizar o módulo por 3. Dessa forma obteremos:

A[2][3%3] = A[2][0]
A[1][3%3] = A[1][0]
A[2][4%3] = A[2][1]

*/

// calculando o somatorio da multiplicação dos elementos
// da diagonal principal utilizando apenas a matriz A

lin = col = 0;
SDP = 0;
for(int s=0;s<3;s++){
prod = 1;
for(int e=0;e<3;e++){ // produtorio dos elementos
prod = prod * A[lin+e][(col+e)%3];
}
SDP = SDP + prod; // somatório dos produtorios
col++;
}
cout << "\nO somatorio da diagonal principal e suas paralelas na matriz original eh: " << SDP << endl;

// calculando o somatorio da multiplicação dos elementos
// da diagonal secundaria utilizando apenas a matriz A

lin = 0;
col = 2;
SDS = 0;
for(int s=0;s<3;s++){
prod = 1;
for(int e=0;e<3;e++){
prod = prod * A[lin+e][(col-e)%3];
}
SDS = SDS + prod;
col++;
}

cout << "O somatorio da diagonal secundaria e suas paralelas na matriz original eh: " << SDS << endl;

det = SDP-SDS;
cout << "\nO determinante eh (utlizando apenas a matriz A): " << det << endl; // exibindo o determinante

}

0
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta.

User badge image

Outros materiais