Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Essa semana escrevi um pequeno código pra aula de algebra, uma mini-lib para trabalhar com matrizes.
Está dividida em duas classes, uma template class abstrata que implementa uma matriz de tipo "T"
e uma outra, derivada dessa classe abstrata, que implementa matrizes numéricas, usando long long double's.
O código é um pouco grande, por isso vou postar num serviço de postagem.
Classe base, implementa uma matriz de tipo "T"
File:VMatrix.h
Matriz Numérica
File:NMatrix.h
File:NMatrix.cpp
Implementação de alguns altoritmos conhecidos, Regra do Chio para calculo de determinantes, Eliminação de Gauss e Resolução de sistemas lineares estão dispníveis aqui:
File:MAlgorithm.h
File:MAlgorithm.cpp
Um exemplo de utilização:
include <iostream>
#include "NMatrix.h"
#include "MAlgorithm.h"
/ exemplo de sistemas de equações lineares /
long double Sistema1(size_t a, size_t B)
{
const int myM[4][5] = {
{1,3,1,0, / / 1},
{1,1,0,0, / / 2},
{3,1,1,1, / / 1},
{0,1,2,1, / / 2}
};
if (a>4 || b>5)
return 0;
else
return myM[a][b];
}
void ResolverSistema()
{
NMatrix m1(4, 5);
NMatrix res;
m1.Fill(&Sistema1);
std::cout << "O sistema: \n";
show<long double>(m1);
MAlgorithm::GaussEliminationAlgorithm(m1);
MAlgorithm::LinearSolve(m1, res);
std::cout << "\nApos a eliminacao de gauss: " << std::endl;
show<long double>(m1);
std::cout << "\nPossui como solucoes:" << std::endl;
show<long double>(res);
}void InverterMatriz()
{
NMatrix m1(4);
NMatrix m2(4);
m1.Fill(&Sistema1);
m2.Fill(&Sistema1);
std::cout << "Dada a matriz:\n";
show<long double>(m1);
std::cout << "\n\nA sua inversa:" << std::endl;
m1.Inverse();
show<long double>(m1);
std::cout << "\nPois, uma matriz vezes a sua inversa retorna a itentidade:" << std::endl;
m2.Multiply(m1);
show<long double>(m2);
}
int main()
{
std::cout << "Manipulacao de matrizes." << std::endl;
std::cout << "Exemplos:\n" << std::endl;
InverterMatriz();
std::cout << "\n\nTecle enter para continuar...\n";
scanf("%*c");
ResolverSistema();
return 0;
}
>
Manipulacao de matrizes.
Exemplos:
Dada a matriz:
1; 3; 1; 0;
1; 1; 0; 0;
3; 1; 1; 1;
0; 1; 2; 1;
A sua inversa:
1; -3; 1; -1;
-1; 4; -1; 1;
3; -9; 2; -2;
-5; 14; -3; 4;
Pois, uma matriz vezes a sua inversa retorna a itentidade:
1; 0; 0; 0;
0; 1; 0; 0;
0; 0; 1; 0;
0; 0; 0; 1;
Tecle enter para continuar...
O sistema:
1; 3; 1; 0; 1;
1; 1; 0; 0; 2;
3; 1; 1; 1; 1;
0; 1; 2; 1; 2;
Apos a eliminacao de gauss:
1; 3; 1; 0; 1;
0; -2; -1; 0; 1;
0; 0; 2; 1; -6;
0; 0; 0; 0.25; 7;
Possui como solucoes:
-6; 8; -17; 28;
É isso!
Abraços pessoal!
Excelente trabalho Victor ;)