Arranjos multidimensionais3838endnote: 38Consulte a Seção 5.3 fornecem uma estrutura adequada para a representação de matrizes em computador. Uma matriz , assim como um arranjo bidimensional, é uma coleção de valores organizados de forma retangular, por exemplo, a matriz tem a forma
| (5.65) | 
Seus elementos são organizados por eixos, o eixo das linhas (axis=0) e o eixo das colunas (axis=1).
O sistema linear
| (5.66a) | |||
| (5.66b) | |||
| (5.66c) | |||
pode ser escrito na seguinte forma matricial
| (5.67) | 
onde é a matriz de coeficientes
| (5.68) | 
o vetor dos termos constantes é
| (5.69) | 
enquanto que o vetor das incógnitas é . No seguinte código, usamos numpy.array para alocamos a matriz dos coeficientes e o vetor dos termos constantes .
Embora úteis para a representação de matrizes, arranjos bidimensionais não são equivalentes a matrizes. Em arranjos, as operações aritméticas elementares (+, -, *, /, etc.) são operações elemento-a-elemento, para matrizes a multiplicação não é assim calculada e a divisão não é definida.
No NumPy, as funções numpy.dot, numpy.matmul ou o operador @ podem ser usados para computar a multiplicação matricial.
Consideramos o sistema linear introduzido no Exemplo 5.4.1. Vamos verificar que sua solução é , e . Equivalentemente, temos que
| (5.73) | 
com . Isto é, se é solução do sistema, então é nulo o resíduo , i.e.
| (5.74) | 
Ou equivalentemente, .
Por definição, a transposta de uma matriz é a matriz , i.e. a matriz obtida de pela permutação de suas linhas com suas colunas. No NumPy, a transposta de um arranjo bidimensional pode ser calculado com a função numpy.transpose, com o método numpy.ndarray.transpose ou com o atributo numpy.ndarray.T.
Uma matriz é dita ser simétrica, quando . Observamos que é simétrica a matriz
| (5.75) | 
Agora, não é simétrica a matriz
| (5.76) | 
Por definição, o determinante de uma matriz é o escalar
| (5.77) | |||
| (5.78) | 
onde é o conjunto de todas as permutações de e é o sinal (ou assinatura) da permutação . Para matrizes , temos
| (5.79) | |||
| (5.80) | 
Enquanto que no caso de matriz , temos
| (5.81) | |||
| (5.82) | |||
| (5.83) | |||
| (5.84) | |||
| (5.85) | |||
| (5.86) | |||
| (5.87) | 
A função numpy.linalg.det do NumPy pode ser usado para computar o determinante de um arranjo.
O determinante
| (5.88) | |||
| (5.89) | 
O Método de Cramer3939endnote: 39Gabriel Cramer, 1704 - 1752, matemático suíço. Fonte: Wikipédia: Gabriel Cramer. usa de determinantes para o cálculo da solução de sistemas lineares. Dado um sistema linear
| (5.90) | 
denotamos a matriz dos coeficientes por
| (5.91) | 
onde denota a -ésima coluna de . Vamos denotar por a matriz obtida de substituindo pelo vetor dos termos constantes , i.e.
| (5.92) | 
O método consiste em computar a solução com
| (5.93) | 
para cada .
Vamos resolver o sistema linear dado no Exercício 5.4.1. Sua forma matricial é
| (5.94) | 
com matriz dos coeficientes
| (5.95) | 
e vetor dos termos constantes
| (5.96) | 
Para aplicação do Método de Cramer, calculamos
| (5.97) | |||
| (5.98) | 
e das matrizes auxiliares
| (5.99) | |||
| (5.100) | 
| (5.101) | |||
| (5.102) | 
| (5.103) | |||
| (5.104) | 
Com isso, obtemos a solução
| (5.105) | |||
| (5.106) | |||
| (5.107) | 
Complete as lacunas.
Usualmente, matrizes são computacionalmente modeladas como arrays multidimensionais.
A operação de multiplicação matricial entre dois arrays pode ser feita com o operador @ ou com o método numpy.matmul.
A transposta de um numpy.array bidimensional pode ser obtida com o atributo .T ou o método numpy.transpose.
O submódulo numpy.linalg contém o método det para a computação do determinante de um numpy.array.
a) arrays; b) @; c) .T; d) numpy.linalg
Aloque com numpy.array e imprima as seguintes matrizes:
| (5.108) | 
| (5.109) | 
| (5.110) | 
| (5.111) | 
Aloque as seguintes matrizes com numpy.array
| (5.112) | 
e
| (5.113) | 
Então, compute e imprima o resultado das seguintes operações matriciais
Aloque as seguintes matrizes numpy.array:
| (5.114) | 
e
| (5.115) | 
Então, compute e imprima o resultado das seguintes operações matriciais:
Escreva a forma matricial do seguinte sistema linear
| (5.116a) | |||
| (5.116b) | |||
| (5.116c) | |||
Use numpy.array para alocar a matriz dos coeficientes e o vetor dos termos constantes . Então, verifique quais dos seguintes vetores é solução do sistema
Calcule e compute o determinante das seguintes matrizes
| (5.117) | 
| (5.118) | 
| (5.119) | 
Use o Método de Cramer para computar a solução do sistema dado no Exercício 5.4.5. Verifique sua solução com a computada pelo método numpy.linalg.solve.
Dica: .
Desenvolva sua própria função Python para a computação do determinante de uma matriz .
Dica: use a função intertools.permutations para obter um iterador sobre as permutações.
Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!

Este texto é disponibilizado nos termos da Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional. Ícones e elementos gráficos podem estar sujeitos a condições adicionais.