Diferenças entre edições de "Matrizes"

De GNU Octave
Ir para: navegação, pesquisa
(Leitura adicional)
(Matrizes mágicas)
Linha 375: Linha 375:
 
</math>
 
</math>
  
A soma das linhas de M, das colunas de de cada uma das diagonais dá sempre 15. Da mesma forma, a soma das linhas de N, das colunas e das diagonais dá sempre 34. Ambas são matrizes mágicas.
+
A soma das linhas de M, das colunas e de cada uma das duas diagonais dá sempre 15. Da mesma forma, a soma das linhas de N, das colunas e das diagonais dá sempre 34. '''Ambas são matrizes mágicas.'''
  
 
Verifica-se o também a seguinte propriedade: a soma de cada linha, coluna ou diagonal é igual à soma de todos os elementos da matriz a dividir pela dimensão da mesma. Ou seja, na matriz M todas as linhas, colunas e diagonais somam 15 que é igual a 45 (soma de todos os elementos da matriz) a dividir por 3 (a dimensão da matriz). De igual modo, todos os elementos da matriz N somam 136, que dividindo por 4, dá 34, que é a soma das linhas, colunas e diagonais.
 
Verifica-se o também a seguinte propriedade: a soma de cada linha, coluna ou diagonal é igual à soma de todos os elementos da matriz a dividir pela dimensão da mesma. Ou seja, na matriz M todas as linhas, colunas e diagonais somam 15 que é igual a 45 (soma de todos os elementos da matriz) a dividir por 3 (a dimensão da matriz). De igual modo, todos os elementos da matriz N somam 136, que dividindo por 4, dá 34, que é a soma das linhas, colunas e diagonais.
Linha 400: Linha 400:
  
 
<syntaxhighlight>length(unique([sum(N) sum(N')])) == 1</syntaxhighlight>
 
<syntaxhighlight>length(unique([sum(N) sum(N')])) == 1</syntaxhighlight>
 
  
 
=== O jogo sudoku ===
 
=== O jogo sudoku ===

Revisão das 22h55min de 4 de fevereiro de 2014

Notação matemática

A notação utilizada em matemática para matrizes introduz a noção de elemento, designado por a_{ij}, a matriz geralmente designada por uma letra maiúscula, A, por exemplo, e a geometria da matriz m \times n, se esta tiver m linhas por n colunas. Seja então a seguinte matriz:


 A_{m,n} =
 \begin{bmatrix}
  a_{1,1} & a_{1,2} & \cdots & a_{1,n} \\
  a_{2,1} & a_{2,2} & \cdots & a_{2,n} \\
  \vdots  & \vdots  & \ddots & \vdots  \\
  a_{m,1} & a_{m,2} & \cdots & a_{m,n}
 \end{bmatrix}

Notação do Octave

A matriz 
 A =
 \begin{bmatrix}
  1 & 2 & 3 & 4 \\
  5 & 4 & 6 & 8 \\
  9 & 10 & 12 & 12
\end{bmatrix}
representa-se em Octave como:

octave:3> A = [ 1, 2, 3, 4; 5, 4, 6, 8; 9, 10 , 12, 12]
A =
    1    2    3    4
    5    4    6    8
    9   10   12   12

O elemento da matriz na linha 2 e coluna 3 pode ser obtido utilizando a seguinte sintaxe:

octave:4> A(2,3)
ans =  6

Pode-se também obter toda uma linha, ou toda uma coluna. Toda a segunda linha obtém-se com:

octave:5> A(2,:)
ans =
   5   4   6   8

Toda a 4 coluna obtém-se com:

octave:6> A(:,4)
ans =
    4
    8
   12

A geometria da matriz, o número de linhas e de colunas, obtem-se com o operador size.

size(A)
ans =
   3   4

Exercícios

  1. Represente a matriz 
 B =
 \begin{bmatrix}
  0 & \frac{1}{2} & 2^2 \\
  1 & \sqrt(3) & \frac{\sqrt(3)}{3}
\end{bmatrix}
em Octave.
    octave:1> B = [0 1/2 2^2; 1 sqrt(3) sqrt(3)/3]
    B =
       0.00000   0.50000   4.00000
       1.00000   1.73205   0.57735
  2. Calcule o número de linhas da matriz. (Só o número de linhas, e não o número de linhas e colunas).
    octave:7> size(B)(1)
    ans =  2
  3. Apresente a matriz com mais casas decimais.
    octave:9> format long
    octave:10> B
    B =
       0.000000000000000   0.500000000000000   4.000000000000000
       1.000000000000000   1.732050807568877   0.577350269189626
  4. Crie uma nova matriz C com as colunas 1 e 3 de B.
    octave:11> C = B(:,[1 3])
    C =
       0.000000000000000   4.000000000000000
       1.000000000000000   0.577350269189626

Matrizes especiais

O comando diag pode criar uma matriz diagonal, se o argumento for o vetor que constitui a diagonal. Exemplo:

octave:22> diag([7 8 9])
ans =
Diagonal Matrix
   7   0   0
   0   8   0
   0   0   9

Repare que o argumento de diag é um vetor, no exemplo apresentado, e o resultado é uma matriz.

Alternativamente, o comando diag devolve o vetor da diagonal de uma matriz, se o argumento for uma matriz.

octave:18> A = [1 2 3; 4 5 6; 7 8 9]
A =
   1   2   3
   4   5   6
   7   8   9
octave:19> diag(A)
ans =
   1
   5
   9
Matriz identidade

A matriz identidade 
 I_n =
 \begin{bmatrix}
  1 & 0 & \cdots & 0 \\
  0 & 1 & \cdots & 0 \\
  \vdots  & \vdots  & \ddots & \vdots  \\
  0 & 0 & \cdots & 1
 \end{bmatrix}
é gerada com o comando eye(n).

octave:34> eye(3)
ans =
Diagonal Matrix
   1   0   0
   0   1   0
   0   0   1
Matriz nula

A matriz nula (com todos os elementos a zero) é gerada com o comando zeros.

>> zeros(2)
ans =
 
   0   0
   0   0
 
>> zeros(2,4)
ans =
 
   0   0   0   0
   0   0   0   0
 
>>
Matrizes com 1

De forma semelhante, pode-se gerar uma matriz só com 1 (com todos os elementos a 1) com o comando ones.

>> ones(3)
ans =
 
   1   1   1
   1   1   1
   1   1   1
 
>> ones(2,5)
ans =
 
   1   1   1   1   1
   1   1   1   1   1
 
>>

Obviamente que, com base nas matrizes geradas por zeros e ones se podem gerar outras matrizes com uma dada constante, como, por exemplo:

>> zeros(2,5)+7
ans =
 
   7   7   7   7   7
   7   7   7   7   7
 
>> ones(3)/4
ans =
 
   0.25000   0.25000   0.25000
   0.25000   0.25000   0.25000
   0.25000   0.25000   0.25000
 
>>

Exercícios

Considere a matriz 
 A =
 \begin{bmatrix}
  1 & 2 & 3 & 4 \\
  5 & 6 & 7 & 8 \\
  9 & 10 & 11 & 12
\end{bmatrix}

Verifique o resultado das seguintes expressões:

  1. Calcule diag(3:3:10)
    octave:28> diag(3:3:10)
    ans =
    Diagonal Matrix
       3   0   0
       0   6   0
       0   0   9
  2. Calcule diag(diag(A)).
    octave:30> A = [1 2 3 4; 5 6 7 8; 9 10 11 12]
    A =
        1    2    3    4
        5    6    7    8
        9   10   11   12
    octave:31> diag(diag(A))
    ans =
    Diagonal Matrix
        1    0    0
        0    6    0
        0    0   11
  3. Calcule sum(diag(eye(10))).
    octave:32> sum(diag(eye(10)))
    ans =  10

Operações sobre matrizes

Considere a matriz 
 A =
 \begin{bmatrix}
  1 & 2 \\
  3 & 4
\end{bmatrix}
, a matriz 
 B =
 \begin{bmatrix}
  1 & -2 \\
  -1 & 0
\end{bmatrix}
e a matriz 
 C =
 \begin{bmatrix}
  2 & -2 \\
  -2 & 2
\end{bmatrix}
.

Soma e produto escalar

Produto de matrizes

Exercícios

  1. Calcule A + B
  2. Calcule A + A
  3. Calcule o produto escalar 2 * B
  4. Comprove que o número de colunas de A é igual ao número de linhas de B
  5. Calcule o produto A*B
  6. Calcule o produto A*B*C
  7. Prove que o produto de matrizes é associativo (AB)C = A(BC)
  8. Prove que o produto de matrizes é distributivo em relação à soma A(B + C) = AB + AC
  9. Prove que a matriz identidade é o elemento neutro para o produto AI = A e IA = A. Use I = eye(2) para gerar a matriz I.
  10. Prove que a matriz nula é o elemento absorvente para o produto: OA == AO == O. Use O = zeros(2) para gerar a matriz nula O. Neste exercício, use a letra ó maiúscula (O) para representar a matriz nula, e não o número zero (0). Se usar o número zero, em vez do ó maiúsculo (O), está a multiplicar o escalar zero por uma matriz, e não a matriz nula.
  11. Prove que \alpha(AB) = (\alphaA)B = A(\alphaB). Use um valor real qualquer como \alpha, à sua escolha.

Mais operações

Transposta

A matriz transposta de A representa-se matematicamente como A^T. Por definição (A^T)_{ij} = (A)_{ji}.

Se A^T = A a matriz diz-se simétrica.

Em Octave, a matriz transposta representa-se por A'

Exercícios

  1. Prove que (A^T)^T = A
  2. Prove que (A + B)^T = A^T + B^T
  3. Prove que (\alpha A)^T = \alpha A^T
  4. Prove que (AB)^T = B^T A^T

Matrizes mágicas

Uma matriz de n por n contendo os números de 1 até n² diz-se uma matriz mágica, se cada uma das colunas, cada uma das linhas e as duas diagonais principais tiverem a mesma soma.

Considere a matriz M e a matriz N.


 M =
 \begin{pmatrix}
  8 & 1 & 6 \\
  3 & 5 & 7 \\
  4 & 9 & 2 
 \end{pmatrix},
 N =
 \begin{pmatrix}
  16 & 2 & 3 & 13 \\
  5 & 11 & 10 & 8 \\
  9 & 7 & 6 & 12 \\
  4 & 14 & 15 & 1
 \end{pmatrix}

A soma das linhas de M, das colunas e de cada uma das duas diagonais dá sempre 15. Da mesma forma, a soma das linhas de N, das colunas e das diagonais dá sempre 34. Ambas são matrizes mágicas.

Verifica-se o também a seguinte propriedade: a soma de cada linha, coluna ou diagonal é igual à soma de todos os elementos da matriz a dividir pela dimensão da mesma. Ou seja, na matriz M todas as linhas, colunas e diagonais somam 15 que é igual a 45 (soma de todos os elementos da matriz) a dividir por 3 (a dimensão da matriz). De igual modo, todos os elementos da matriz N somam 136, que dividindo por 4, dá 34, que é a soma das linhas, colunas e diagonais.

Verificar as propriedades das matrizes mágicas

  • a soma das colunas são todas iguais
range(sum(N)) == 0

ou

length(unique(sum(N))) == 1
  • a soma das colunas e a soma das linhas dão o mesmo valor

O predicado anterior tem que dar 1 (verdadeiro) aplicado a qualquer uma das matrizes anteriores M ou N.

Aplicado a uma matriz C = \begin{pmatrix} 5 & 5 \\ 5 & 3 \end{pmatrix}, tem que dar 0 (falso).

range([sum(N) sum(N')]) == 0

ou

length(unique([sum(N) sum(N')])) == 1

O jogo sudoku

O Sudoku é um quebra-cabeças popular, que consiste na preenchimento dos números em falta num tabuleiro de 9 matrizes de 3x3, colocadas de forma a formarem um grande tabuleiro de de 9x9.

Apenas algumas casas começam por estar preenchidas, como ilustrado na seguinte figura.

63716 wm 91789v00 sudoku fig1 w.gif

As regras de preenchimento são simples:

  • cada coluna tem que ter cada um dos algarismos de 1 a 9;
  • cada linha tem que ter cada um dos algarismos de 1 a 9;
  • cada


63717 wm 91789v00 sudoku fig2 w.gif

Propriedades do tabuleiro de sudoku

Leitura adicional

Reveja os conceitos apresentados sobre matrizes e outros um pouco mais avançados em Vectors and matrices, Octave Programming Tutorial.