A maior rede de estudos do Brasil

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

O programa deve ser em c++.


7 resposta(s) - Contém resposta de Especialista

User badge image

RD Resoluções Verified user icon

Há mais de um mês

Inicialmente devemos definir as variáveis que serão utilizadas no programa.

#include <iostream>

using namespace std;

int main()

{

int n,i,j;

int v[2][2];

int diagonal1,diagonal,determinante;

Agora devemos receber os valores referente a uma matriz 2x2. A mesma sorte serve para as demais matrizes.

for(i=0;i<2;i++){

for( j=0;j<2;j++){

printf("\nDigite os valores:");

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

}

}

Agora devemos calcular as diagonais da matriz.

for(i=0;i<2;i++){

for( j=0;j<2;j++){

if(i==j){

diagonal1=diagonal1*v[i][j];

}

}}

diagonal2=v[0][1]*v[1][0];

Por fim, devemos calcular o determinante e apresentar ao usuário.

determinante=diagonal1-diagonal2;

printf(" %i",determinante);

return 0;

}

Inicialmente devemos definir as variáveis que serão utilizadas no programa.

#include <iostream>

using namespace std;

int main()

{

int n,i,j;

int v[2][2];

int diagonal1,diagonal,determinante;

Agora devemos receber os valores referente a uma matriz 2x2. A mesma sorte serve para as demais matrizes.

for(i=0;i<2;i++){

for( j=0;j<2;j++){

printf("\nDigite os valores:");

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

}

}

Agora devemos calcular as diagonais da matriz.

for(i=0;i<2;i++){

for( j=0;j<2;j++){

if(i==j){

diagonal1=diagonal1*v[i][j];

}

}}

diagonal2=v[0][1]*v[1][0];

Por fim, devemos calcular o determinante e apresentar ao usuário.

determinante=diagonal1-diagonal2;

printf(" %i",determinante);

return 0;

}

User badge image

Alessandro Trevisan

Há mais de um mês

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/ <<<<<<<<<---

 

 

User badge image

Jonata Matias de Araújo

Há mais de um mês

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

}

Essa pergunta já foi respondida por um dos nossos especialistas