Unixtopia

main/ artigos/

Álgebra Linear

É 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.

Noções básicas

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.