
Nesse artigo recapitularemos conceitos fundamentais sobre Matrizes e Determinantes.
Uma explicação rápida sobre Matriz Matemática é que ela serve para organizar dados numéricos(criando uma tabela) para facilitar a leitura e organização dos dados para solucionar problemas de forma mais fácil.
As Matrizes são utilizadas em diversas áreas:
E entre diversas outras.
O conceito em linhas gerais é: Uma matriz é uma tabela retangular de números (ou expressões) organizados em linhas e colunas., sua representação se parece com isso:

Essa matriz tem uma ordem de: 2x3 (2 linhas(horizontal) e 3 colunas(vertical)), nas representações de matrizes sempre começamos informando as linhas.
Outra observação sobre essa matriz é que ela possui a explicação: A = [aij]<sub>mxn</sub>, isso quer dizer que, por exemplo:
1 está na 1º linha(m) e na 1º coluna(n), logo, a representação aij dele é: a11 e assim por diante.Convertendo todos para aij, seria:

Essa mesma matriz em C++ podemos usar o std::vector ou std::array:
std::vector<std::vector<int>> se quiser algo dinâmico e flexível.std::array<std::array<int, 3>, 2> se as dimensões forem fixas e conhecidas em tempo de compilação.
Nunca use std::list para matrizes. Ela não tem acesso aleatório eficiente.Com std::vector:
std::vector<std::vector<int>> A = {
{1, 2, 3},
{4, 5, 6}
};Com std::array:
std::array<std::array<int, 3>, 2> A = { {
{1, 2, 3},
{4, 5, 6}
} };std::vector se for alterar tamanho em tempo de execução.std::array para desempenho máximo com tamanho fixo.Suponhamos que você está prestando um concurso e possui esse enunciado:
aij]2x3 tal que aij = (i + j)2.Solução:
aij = (i + j)2 => a11 = (0 + 0)2 => a11 = 0.
Faça para os demais
A solução para todos em C++ utilizando std::array, já que a matriz é de tamanho fixo 2x3:
#include <array>
#include <iostream>
int main() {
std::array<std::array<int, 3>, 2> B;
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
B[i][j] = (i + j) * (i + j);
}
}
// Exibe a matriz
for (const auto& row : B) {
for (int val : row) {
std::cout << val << " ";
}
std::cout << "\n";
}
return 0;
}Se quiser com std::vector, troca por:
std::vector<std::vector<int>> B(2, std::vector<int>(3));O resto do código é igual.
O resultado será:

nxn).













Operações aritméticas(algébricas ou matriciais) com Matrizes.
Só é possível se as matrizes tiverem a mesma ordem.

Ou seja,
1 + 5=6,2 + 6=8e assim por diante.
Em C++:
#include <array>
#include <iostream>
int main() {
std::array<std::array<int, 2>, 2> A = { { {1, 2}, {3, 4} } };
std::array<std::array<int, 2>, 2> B = { { {5, 6}, {7, 8} } };
std::array<std::array<int, 2>, 2> C;
for (int i = 0; i < 2; ++i){
for (int j = 0; j < 2; ++j){
C[i][j] = A[i][j] + B[i][j];
}
}
for (auto& row : C){
for (int v : row){
std::cout << v << (v == row.back() ? '\n' : ' ');
}
}
}Multiplica-se cada elemento por um número real (escalar).

Ou seja,
3 x 1=3,3 x 2=6e assim por diante.
Em C++:
#include <array>
#include <iostream>
int main() {
std::array<std::array<int, 2>, 2> A = { { {1, 2}, {3, 4} } };
std::array<std::array<int, 2>, 2> B;
int escalar = 3;
for (int i = 0; i < 2; ++i){
for (int j = 0; j < 2; ++j){
B[i][j] = escalar * A[i][j];
}
}
for (auto& row : B){
for (int v : row){
std::cout << v << (v == row.back() ? '\n' : ' ');
}
}
}O número de colunas da primeira matriz deve ser igual ao número de linhas da segunda.

Em C++:
#include <array>
#include <iostream>
int main() {
std::array<std::array<int, 2>, 2> A = { { {1, 2}, {3, 4} } };
std::array<std::array<int, 2>, 2> B = { { {5, 6}, {7, 8} } };
std::array<std::array<int, 2>, 2> C = {};
for (int i = 0; i < 2; ++i){
for (int j = 0; j < 2; ++j){
for (int k = 0; k < 2; ++k){
C[i][j] += A[i][k] * B[k][j];
}
}
}
for (auto& row : C){
for (int v : row){
std::cout << v << (v == row.back() ? '\n' : ' ');
}
}
}
O determinante é um número associado apenas a matrizes quadradas, útil para resolver sistemas lineares e verificar se uma matriz é invertível.
IMPORTANTE: Na representação de matrizes usamos colchetes:
[ ], mas em determinantes usamos barras verticais, exemplo:| |.
2x2
Exemplo:

Em C++:
#include <iostream>
int main(){
int a = 1, b = 2;
int c = 3, d = 4;
int det = a * d - b * c;
std::cout << det << '\n';
}3x3 (Regra de Sarrus)A Regra de Sarrus consiste em adicionar a 1º e a 2º coluna para o lado direito da matriz determinante e traçar diagonais(a partir dos números da primeira LINHA), exemplo:
Isso para uma matriz
3x3.


Exemplo:

= 45 + 84 + 96 - 105 - 48 - 72 = 0
Em C++:
#include <iostream>
int main(){
int a11 = 1, a12 = 2, a13 = 3;
int a21 = 4, a22 = 5, a23 = 6;
int a31 = 7, a32 = 8, a33 = 9;
int det =
a11 * a22 * a33 +
a12 * a23 * a31 +
a13 * a21 * a32
- a13 * a22 * a31
- a11 * a23 * a32
- a12 * a21 * a33;
std::cout << det << '\n';
}det = 0.det = 0.det(A x B) = det(A) x det(B).
Em C++:
#include <iostream>
int main(){
int a = 7, b = 3;
int c = -2, d = 4;
int det = a * d - b * c;
std::cout << det << '\n';
}
Resposta: 14.