É uma extensão da álgebra elementar clássica, que significa operações básicas com números e variáveis para vetores e matrizes, tipo de operações com conjuntos de números. É uma ferramenta básica de matemática avançada e ciência da computação, e ao menos deve ser conhecida por todo programador. Por que se chama álgebra linear? Porque está relacionada ao conceito de linearidade, que tem a ver com lidar com linhas retas, os resultados que obtemos na álgebra linear são equivalentes mais abstratos de linhas retas, planos e hiperplanos, embora isso possa ser difícil ver devido a toda a abstração e maior dimensionalidade.
Na álgebra, nossos elementos básicos são números, aprendemos a somar, multiplicar, resolver equações com eles. Na linear, chamamos esses números únicos de escalares, como 1, -10,5 ou pi e também adicionamos elementos mais complexos, vetores e matrizes, com os quais podemos realizar operações semelhantes, embora às vezes se comportem de forma um pouco diferente, a ordem na multiplicação de matrizes importa, ao contrário dos escalares. Vetores são, de forma simplificada e ligeiramente incorreta, sequências, matrizes, de número, um vetor de comprimento 3 pode ser [1,5, 0, -302]. Uma matriz pode ser vista de forma semelhante como uma matriz de números bidimensional, uma matriz 2x3 pode se parecer com isso:
|1 2,5 -10| |24 -3 0 |
Podemos ver vetores como matrizes que têm apenas uma coluna, os chamados vetores de coluna, ou apenas uma linha, os chamados vetores de linha, é apenas uma questão de convenção qual tipo de vetores escolhemos usar, isso afeta de qual lado multiplicaremos vetores por matrizes. Escolhemos que tipo de vetores usaremos e então continuamos usando apenas esse tipo. Como, um vetor de linha:
| 5 7.3 -2 |
É realmente uma matriz 1x3 que, como um vetor de coluna (matriz 3x1), pareceria:
|5 | |7.3| |-2|
Por que trabalhamos com vetores e matrizes? Porque eles podem representar certas coisas que encontramos em matemática e programação melhor do que números, por exemplo, vetores podem representar pontos no espaço ou velocidades com direções e matrizes podem representar transformações como rotações, isso não é óbvio, mas é verdade. Com vetores e matrizes, podemos realizar operações semelhantes às dos números normais, adição, subtração, multiplicação, mas também há novas operações e algumas operações podem se comportar de forma diferente. Ao lidar com vetores, há várias maneiras de multiplicá-los, podemos multiplicar um vetor por um escalar ou um vetor por um vetor, e há várias maneiras de fazer isso, como o produto escalar, que resulta em um escalar, e o produto vetorial, que resulta em um vetor. A multiplicação de matrizes é, diferentemente da multiplicação de números reais, não comutativa, A vezes B não é necessariamente igual a B vezes A, mas ainda é distributiva. Podemos multiplicar vetores com matrizes, mas apenas aqueles que têm tamanhos compatíveis. E também podemos resolver equações e sistemas de equações que têm vetores e matrizes neles. Há uma matriz especialmente importante chamada matriz identidade ou unitária, denotada I, uma matriz NxN pela qual, se multiplicarmos qualquer matriz, obtemos a mesma matriz. A matriz identidade tem 1s na diagonal principal e 0s em outros lugares. Uma matriz identidade 3x3 parece com:
|1 0 0| |0 1 0| |0 0 1|
Vamos ver alguns detalhes das operações básicas com vetores e matrizes:
Multiplicação de matrizes é uma operação importante, então vamos ver um exemplo. Vamos ter uma matriz 2x3 A:
|1 2 3| A = |4 5 6|
e uma matriz 3x4 B:
|7 8 9 10| B = |11 12 13 14| |15 16 17 18|
O resultado, AB, será uma matriz 2x4 na qual o elemento superior esquerdo é igual a 1 * 7 + 2 * 11 + 3 * 15 = 74, o produto escalar da linha 1 2 3 com a coluna 7 11 15. Geralmente desenhamos as matrizes convenientemente da seguinte forma:
|7 8 9 10 | |11 12 13 14 | |15 16 17 18 | |7 8 9 10| |1 2 3| |11 12 13 14| = |1 2 3| |74 80 86 92 | |4 5 6| |15 16 17 18| |4 5 6| |173 188 203 218|
Caso ainda não esteja claro, aqui está um código C da multiplicação de matrizes mostrada acima:
#include <stdio.h> int main() { int A[2][3] = {{1, 2, 3}, {4, 5, 6}}; int B[3][4] = {{7, 8, 9, 10}, {11, 12, 13, 14}, {15, 16, 17, 18}}; int sum; for (int row = 0; row < 2; ++row) { for (int col = 0; col < 4; ++col) { sum = 0; for (int i = 0; i < 3; ++i) sum += A[row][i] * B[i][col]; printf("%d ", sum); } putchar('\n'); } return 0; }
Impulsionado por nada. Todo conteúdo é disponível sob CC0 1.0 domínio público. Envie comentários e correções para Mr. Unix em victor_hermian@disroot.org.