Escolar Documentos
Profissional Documentos
Cultura Documentos
Introdução
Este notebook objetiva demonstrar a resolução de problemas comuns da Álgebra Linear utilizando NumPy e
SymPy.
Primeiro iremos importar as bibliotecas que iremos utilizar no decorrer deste notebook:
In [1]:
import numpy as np
import sympy
from sympy.matrices import zeros,eye,ones
Definição
Da Álgebra linear sabemos que uma matriz A sobre um corpo K ou, simplesmente, uma matriz A (quando K
estiver subentendido) é uma tabela retangular de escalares, costumeiramente representada no formato que
segue:
[ ]
a 11 … a 1n
a 21 … a 2n
A=
⋮ ⋱ ⋮
a m1 … a mn
Dizemos que uma matriz com m linhas e n colunas é uma matriz m × n . O par de números m e n é dito o
tamanho da matriz.
Consideremos uma matriz com m linhas e n colunas que denotaremos por A m × n. Apresentaremos
brevemente algumas matrizes importantes em Álgebra Linear. Utilizaremos o construtor Matrix() da
biblioteca SymPy para definir as matrizes.
1. Matriz Quadrada: matriz em que o número de linhas é igual ao número de colunas (m = n).
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 1/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
In [2]:
A = sympy.Matrix(2,2,[-1, 2, 4, 5])
A
Out[2]:
[ ] −1
4
2
5
1. Matriz Nula: matriz em que todos os elementos são nulos, ou seja, a ij = 0 para todo i e j.
In [3]:
B = sympy.zeros(2,3)
B
Out[3]:
[ 0
0
0
0
0
0 ]
1. Matriz-Coluna:matriz que possui uma única coluna (A m × 1).
In [4]:
Out[4]:
[]
−1
2
10
5
In [5]:
In [6]:
D = sympy.Matrix(1,3, [x,y,z])
D
Out[6]:
[x y z]
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 2/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
1. Matriz diagonal: matriz quadrada em que qualquer elemento fora da diagonal principal é nulo, isto é,
a ij = 0 para i ≠ j.
Assim, dizemos que uma matriz quadrada S = [s ij] é diagonal se todos os seus elementos fora da diagonal
principal forem nulos. Às vezes, denotamos uma tal matriz por S = diag s 11, s 22, . . . , s nn onde alguns s ii, ou
todos, podem ser nulos.
In [7]:
Out[7]:
[ ]
1 0 0 0
0 −2 0 0
0 0 −7 0
0 0 0 4
In [8]:
I = sympy.eye(4)
I
Out[8]:
[ ]
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
1. Matriz triangular superior: matriz quadrada em que todos os elementos abaixo da diagonal principal são
nulos, ou seja, a ij = 0 se i > j.
In [9]:
D = sympy.Matrix(np.triu([2,-1,4],k=0))
D
Out[9]:
[ ]
2 −1 4
0 −1 4
0 0 4
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 3/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
1. Matriz triangular inferior: matriz quadrada em que todos os elementos acima da diagonal principal são
nulos, ou seja, a ij = 0, ∀i < j.
In [10]:
F = sympy.Matrix(np.tril([[2,1,1],[1,-1,1], [1,1,2]]))
F
Out[10]:
[ ]
2 0 0
1 −1 0
1 1 2
In [11]:
Out[11]:
[ ]
4 3 −1
3 2 0
−1 0 5
In [12]:
Out[12]:
[ ] 5
4
−5
−4
In [13]:
H*H
Out[13]:
[ ] 5
4
−5
−4
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 4/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
[ ]
a 11 + b 11 … a 1n + b 1n
a 21 + b 21 … a 2n + b 2n
A+B=
⋮ ⋱ ⋮
a m1 + b m1 … a mn + b mn
O múltiplo da matriz A pelo escalar k, denotado por simplesmente kA, é a matriz obtida pelo produto de cada
elemento de A por k, ou seja,
[ ]
ka 11 … ka 1n
ka 21 … ka 2n
kA =
⋮ ⋱ ⋮
ka m1 … ka mn
Seja A =
[ 1
4
2 3
5 6 ] [ 2
eB= 1
4
3
6
5 ] iremos encontrar a matriz C, dada por A + B. Iremos simplesmente
In [14]:
A = np.array([[1,2,3], [4,5,6]])
B = np.array([[2,4,6],[1,3,5]])
C = A+B
In [15]:
Out[15]:
array([[ 3, 6, 9],
[ 5, 8, 11]])
Encontrada a matriz C, iremos encontrar a matriz D, dada por kC, onde k = -2.
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 5/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
In [16]:
In [17]:
Out[17]:
Poderíamos resolver este mesmo problema usando a função np.dot() - utilizada para efetuar o produto
matricial:
In [18]:
D = np.dot(k,C)
In [19]:
Out[19]:
1. A + B = B + A (comutatividade)
2. A + (B + C) = (A + B) + C (associatividade)
3. A + 0 = A
Iremos demonstrar a validade de tais propriedades usando funções de Álgebra Linear do SymPy.Para tanto,
definiremos três matrizes quadradas genéricas de ordem 2.
In [20]:
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 6/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
In [21]:
Out[21]:
[ a 11
a 21
a 12
a 22 ]
In [22]:
Out[22]:
[ b 11
b 21
b 12
b 22 ]
In [23]:
Out[23]:
[ c 11
c 21
c 12
c 22 ]
Da propriedade 1 temos que:
In [24]:
A+B
Out[24]:
[ a 11 + b 11
a 21 + b 21
a 12 + b 12
a 22 + b 22 ]
In [25]:
B+A
Out[25]:
[ a 11 + b 11
a 21 + b 21
a 12 + b 12
a 22 + b 22 ]
Então:
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 7/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
In [26]:
(A+B) == (B+A)
Out[26]:
True
In [27]:
A+(B+C)
Out[27]:
[ a 11 + b 11 + c 11
a 21 + b 21 + c 21
a 12 + b 12 + c 12
a 22 + b 22 + c 22 ]
In [28]:
(A+B)+C
Out[28]:
[ a 11 + b 11 + c 11
a 21 + b 21 + c 21
a 12 + b 12 + c 12
a 22 + b 22 + c 22 ]
In [29]:
A+(B+C) == (A+B)+C
Out[29]:
True
Por fim, precisaremos criar uma matriz nula para verificar a última propriedade.
In [30]:
In [31]:
zero = zeros(2,2)
In [32]:
zero
Out[32]:
[ ] 0
0
0
0
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 8/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
In [33]:
A+zero == A
Out[33]:
True
1. k(A + B) = kA + kB
2. (k 1 + k 2)A = k 1A + k 2A
3. kA = 0, em que k=0
Voltando para as matrizes... Observe que ambas, A + B e kA, são matrizes m × n . Podemos definir –A =
(–1)A e A − B = A + (–B). Dizemos que –A é a matriz simétrica de A e que A − B é a matriz diferença de
A e B. Não se define a soma de matrizes de tamanhos distintos.
Seja A =
[ 1
4
2 3
5 6 ] encontremos a matriz simétrica de A. Definiremos a matriz A e seguidamente
In [34]:
A = np.array([[1,2,3],[4,5, 6]])
In [35]:
-A
Out[35]:
In [36]:
k=-1
A_simetrica = np.dot(k,A)
In [37]:
A_simetrica
Out[37]:
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 9/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
In [38]:
B = np.array([[2,4,6],[1,3,5]])
In [39]:
A-B
Out[39]:
[ ] [ ]
1 2 3 11 0 0
Dadas as matrizes H = 4 −2 −9 eG= 41 − 21 0 encontraremos a matriz J dada por J = H+G.
0 − 12 − 29 0 −1 −2
In [40]:
In [41]:
Out[41]:
Podemos resolver o mesmo problema com SymPy. Usaremos a função Matrix para construir as matrizes H e
G. Informaremos a ordem das respectivas matrizes e passaremos uma lista contendo seus elementos.
In [42]:
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 10/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
In [43]:
Out[43]:
[ ]
12 2 3
45 − 23 −9
0 − 13 − 31
Propriedades
1. Uma matriz é simétrica se, e somente se ela é igual à sua transposta, ou seja, A = A ′ .
2. A ″ = A.
3. (A + B) ′ = A ′ + B ′ .
4. (kA) ′ = kA ′ , em que k é um escalar.
[ ]
2 0
Seja, I =
−4
5
6
11
T
− 2 então I =
0
[ 2
0
−4
11
5
−2
6
]
0 . Em linhas gerais, a linha de uma matriz passa a ser
[ ]
−1 0 0
−4 11 1
T
Dada a matriz K = 5 −2 − 9 , encontremos sua matriz transposta K utilizando o NumPy.
6 0 7
In [44]:
K = np.array([[-1, 0, 0], [-4, 11, 1], [5, -2, -9], [6, 0, 7]])
In [45]:
Out[45]:
array([[-1, 0, 0],
[-4, 11, 1],
[ 5, -2, -9],
[ 6, 0, 7]])
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 11/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
In [46]:
np.transpose(K)
Out[46]:
Ou
In [47]:
K.T
Out[47]:
[ ]
0 1 0
−4 11 1
Dada a matriz L = 5 −2 −9 encontremos L + L T utilizando NumPy.
6 0 7
36 10 57
In [48]:
L = np.array([[0, 1, 0], [-4, 11, 1], [5, -2, -9], [6, 0, 7], [36, 10, 57]])
L
Out[48]:
array([[ 0, 1, 0],
[-4, 11, 1],
[ 5, -2, -9],
[ 6, 0, 7],
[36, 10, 57]])
In [49]:
np.transpose(L)
Out[49]:
Neste caso, não poderemos obter L + L T, pois L T não apresenta a mesma ordem de L.
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 12/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
In [50]:
np.transpose(L).shape, np.shape(L)
Out[50]:
Multiplicação de matrizes
O produto das matrizes A e B é denotado por AB. Particularmente, iremos começar com um caso especial. O
produto AB de uma matriz linha A = [a i] e uma matriz coluna B = [b j] com o mesmo número de elementos
é definido como o escalar (ou a matriz ) obtido pela soma dos produtos das entradas correspondentes, ou
[]
b1
b2
[
seja, AB= a 1, a 2, ..., an ] ...
= a 1b 1+a 2b 2 + ... + a nb n.
bn
Enfatizamos que, nesse caso, AB é um escalar (ou, então, uma matriz 1 × 1). Não definimos o produto AB se
a matriz linha A e a matriz coluna B possuírem um número distinto de elementos. Esta definição é
particularmente importante para definição de um problema de regressão linear múltipla.
[]
3
Dadas as matrizes M = [ 7, − 4, 5] e N = 2 encontremos a matriz O = M ⋅ N.
−1
In [51]:
In [52]:
Out[52]:
In [53]:
Out[53]:
array([[ 3],
[ 2],
[-1]])
Para realizar a multiplicação das matrizes é necessário encontrar o número de linhas e colunas da matriz.
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 13/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
In [54]:
M.shape
Out[54]:
(1, 3)
Acima vemos que nossa matriz M possui uma linha e três colunas.
In [55]:
N.shape
Out[55]:
(3, 1)
Acima vemos que nossa matriz N possui três linhas e uma coluna. Assim, para efetuar o produto matricial o
número de colunas da primeira matriz, deve ser igual ao número de linhas da segunda matriz. Assim, a
matriz O, será :
In [56]:
O = np.dot(M,N)
O
Out[56]:
array([[8]])
[]
4
−9
Dadas as matrizes Q = [ 6, − 1, 8 3]eS= encontraremos a matriz P fruto de QS.
−2
5
In [57]:
In [58]:
Q.shape[1] == S.shape[0]
Out[58]:
True
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 14/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
In [59]:
P = np.dot(Q,S)
P
Out[59]:
array([[32]])
De um modo geral, dadas A = [a ik] e B = [b kj] duas matrizes tais que o número de colunas de A seja igual
ao número de linhas de B, digamos p, supomos assim que A seja uma matriz m × n e B uma matriz p × n.
Então o produto AB de A e B é a matriz m × n cuja ij-ésima entrada é dada pelo produto da i-ésima linha de
A com a j-ésima coluna de B. Assim,
[ ][ ]
a 11 ... a 1p b 11 ... b ij ... b 1n
. ... . . ... . ... .
a i1 ... a 1p . ... . ... . onde c ij = a i1b ij+a i2b j2 + ... + a ipb pj.
. ... . . ... . ... .
a m1 ... a mp b p1 ... b pj ... b pn
Não definimos o produto AB quando A é uma matriz m × p e B é uma matriz com q × n com p ≠ q.
1. Em geral AB ≠ BA.
2. AI = IA = A (o que justifica o nome da matriz identidade)
3. A(B + C) = AB + AC (distributividade à esquerda da multiplicação)
4. (A + B)C = AC + BC (distributividade à direita da multiplicação)
5. (AB)C = A(BC) (associatividade)
6. (AB) ′ = B ′ A ′
7. 0⋅A=0eA⋅0=0
In [60]:
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 15/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
In [61]:
display(A)
display(B)
display(C)
display(I)
display(zero)
[ a 11
a 21
a 12
a 22 ]
[ b 11
b 21
b 12
b 22 ]
[ c 11
c 21
c 12
c 22 ]
[ ] 1
0
0
1
[ ] 0
0
0
0
1. AI = IA = I
In [62]:
A*I == I*A
Out[62]:
True
1. A(B + C) = AB + AC
In [63]:
A*(B+C)
Out[63]:
( ) ( ) ( ) ( )
[ ]
a 11 b 11 + c 11 + a 12 b 21 + c 21 a 11 b 12 + c 12 + a 12 b 22 + c 22
a 21 (b 11 + c 11 ) + a 22 ( b 21 + c 21 ) a 21 (b 12 + c 12 ) + a 22 (b 22 + c 22 )
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 16/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
In [64]:
A*B+A*C
Out[64]:
sympy.expand(A*(B+C)) == A*B+A*C
Out[65]:
True
1. (A + B)C = AC + BC
In [66]:
(A+B)*C
Out[66]:
( ) ( ) ( ) ( )
[ ]
c 11 a 11 + b 11 + c 21 a 12 + b 12 c 12 a 11 + b 11 + c 22 a 12 + b 12
c 11 (a 21 + b 21 ) + c 21 (a 22 + b 22 ) c 12 (a 21 + b 21 ) + c 22 (a 22 + b 22 )
In [67]:
A*C+B*C
Out[67]:
sympy.expand((A+B)*C) == A*C+B*C
Out[68]:
True
1. (AB)C = A(BC)
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 17/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
In [69]:
(A*B)*C
Out[69]:
( ) ( ) ( ) ( )
[ ]
c 11 a 11b 11 + a 12b 21 + c 21 a 11b 12 + a 12b 22 c 12 a 11b 11 + a 12b 21 + c 22 a 11b 12 + a 12b 22
In [70]:
A*(B*C)
Out[70]:
( ) ( ) ( ) ( )
[ ]
a 11 b 11c 11 + b 12c 21 + a 12 b 21c 11 + b 22c 21 a 11 b 11c 12 + b 12c 22 + a 12 b 21c 12 + b 22c 22
In [71]:
sympy.expand((A*B)*C) == sympy.expand(A*(B*C))
Out[71]:
True
1. (AB) ′ = B ′ A ′
In [72]:
(A*B).transpose() == B.transpose()*A.transpose()
Out[72]:
True
1. 0 ⋅ A = 0
In [73]:
zero*A
Out[73]:
[ ] 0
0
0
0
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 18/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
Encontraremos XY sendo X =
[ ] [
1
2
3
−1 eY=
2
5
0
−2
−4
6 ]
Devemos inicialmente verificar a condição do produto matricial.
In [74]:
Out[74]:
True
In [75]:
np.dot(X,Y)
Out[75]:
O traço de uma matriz quadrada A, denotado por tr(A), é a soma dos elementos da diagonal principal, a
saber, tr(A) = a 11 + a 22 + a 33 + . . . + a nn
Propriedades
1. tr(A + B) = tr(B + A)
2. tr(α ⋅ A) = α ⋅ tr(A), com α ∈ R
3. tr(A) = tr(A ′ )
4. tr(I n) = n
5. tr(AB) = tr(BA)
A partir das matrizes definidas a seguir, calcularemos o traço utilizando SymPy e NumPy. Nosso primeiro
exemplo será com uma matriz Identidade I 2. Para construir uma matriz identidade no NumPy podemos
utilizar o comando: np.eye(). Por exemplo, a matriz
In [76]:
F = np.eye(2)
F
Out[76]:
array([[1., 0.],
[0., 1.]])
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 19/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
In [77]:
np.trace(F)
Out[77]:
2.0
Ou,
In [78]:
F.trace()
Out[78]:
2.0
In [79]:
O = np.eye(10)
In [80]:
Out[80]:
array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 1., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 1., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 1., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 1.]])
In [81]:
np.trace(O)
Out[81]:
10.0
Definiremos uma matriz diagonal e em seguida obteremos seu traço utilizando o NumPy
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 20/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
In [82]:
P = np.diag(np.arange(1,6))
P
Out[82]:
array([[1, 0, 0, 0, 0],
[0, 2, 0, 0, 0],
[0, 0, 3, 0, 0],
[0, 0, 0, 4, 0],
[0, 0, 0, 0, 5]])
In [83]:
P.trace()
Out[83]:
15
In [84]:
np.diagonal(P)
Out[84]:
array([1, 2, 3, 4, 5])
In [85]:
P.diagonal()
Out[85]:
array([1, 2, 3, 4, 5])
In [86]:
np.diagonal(np.fliplr(P))
Out[86]:
array([0, 0, 3, 0, 0])
Definiremos agora duas matrizes genéricas A e B utilizando o SymPy, em seguida calcularemos o traço
associado a cada matriz.
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 21/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
In [87]:
In [88]:
Out[88]:
[ ] a
c
b
d
In [89]:
Out[89]:
[ ] e
g
f
h
Traço de A:
In [90]:
sympy.trace(A)
Out[90]:
a+d
Traço de B:
In [91]:
sympy.trace(B)
Out[91]:
e+h
tr(A + B) = tr(B + A)
In [92]:
sympy.trace(A+B)
Out[92]:
a+d+e+h
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 22/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
In [93]:
sympy.trace(B+A)
Out[93]:
a+d+e+h
tr(A) = tr(A ′ )
In [94]:
sympy.trace(A) == sympy.trace(A.transpose())
Out[94]:
True
tr(AB) = tr(BA)
In [95]:
A*B
Out[95]:
[ ae + bg
ce + dg
af + bh
cf + dh ]
In [96]:
B*A
Out[96]:
[ ae + cf
ag + ch
be + df
bg + dh ]
In [97]:
sympy.trace(A*B) == sympy.trace(B*A)
Out[97]:
True
Determinante
Podemos pensar no determinante como um número associado a uma matriz quadrada A m × n. Denotamos
det A.
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 23/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
| |
a 11 a 12 … a 1n
a 21 a 22 … a 2n
⋮ ⋮ ⋱ ⋮
a n1 a n2 … a nn
[ ]
1 2 3 4
4 3 2 1
Dada a matriz V = encontremos det (V).
0 2 4 6
5 7 9 11
In [98]:
In [99]:
round (np.linalg.det(V))
Out[99]:
-20
Uma matriz quadrada A é dita invertível, ou não singular, se existir uma matriz B tal que AB = BA = I onde I é
a matriz identidade. Uma tal matriz B é única.
Dizemos que uma tal matriz B é a inversa de A e a denotamos por A − 1.Observe que a relação que define a
inversa é simétrica; ou seja, se B for a inversa de A, então A será a inversa de B.
Suponha que A =
[ ] [
2 5
1 3 eB=
3
−1
−5
]
2 , verifiquemos se estas matrizes admitem inversa.
In [100]:
A= np.array ([[2,5],[1,3]])
B = np.array ([[3,-5], [-1,2]])
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 24/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
In [101]:
np.dot(A,B)
Out[101]:
array([[1, 0],
[0, 1]])
In [102]:
np.dot(B,A)
Out[102]:
array([[1, 0],
[0, 1]])
In [103]:
Z = np.array([[3,4],[1,0]])
In [104]:
np.linalg.inv(Z)
Out[104]:
array([[ 0. , 1. ],
[ 0.25, -0.75]])
Sistemas Lineares
{
a 11x 1 + a 12x 2 + . . . + a 1nx n = b 1
a 21x 1 + a 22x 2 + . . . + a 2nx n = b 2
sistema linear da forma : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . em que a 11, a 12, . . . , a 1n, b 1, b 2, . . . , b m são
a m1x 1 + a m2x 2 + . . . + a mnx n = b m
números reais.
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 25/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
{
a 11x 1 + a 12x 2 + . . . + a 1nx n = b 1
a 21x 1 + a 22x 2 + . . . + a 2nx n = b 2
Seja o sistema linear de m equações e n incógnitas ..............................
a m1x 1 + a m2x 2 + . . . + a mnx n = b m
[ ]
a 11 a 12 ... a 1n b1
a 21 a 22 ... a 2n b2
matriz completa do sistema
... ... ... ... ....
a n1 a n2 ... a nn b 1m
[ ]
a 11 a 12 ... a 1n
a 21 a 22 ... a 2n
matriz incompleta do sistema
... ... ... ...
a n1 a n2 ... a nn
[] []
x1 b1
x2 b2
Consideremos ainda as seguintes matrizes-colunas assosciadas ao sistema: X = ,B=
⋮ ⋮
xn bm
Multiplicando - se a matriz incompleta pela matriz das incognitas, obtemos a matriz dos temos
independentes:
[ ][ ] [ ]
a 11 a 12 ... a 1n x1 b1
a 21 a 22 ... a 2n x2 b2
⋅ =
... ... ... ... ⋮ ⋮
a n1 a n2 ... a nn xn bm
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 26/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
Denominamos então que o modelo acima é a forma matricial do sistema linear. Em notação simplificada
temos: A ⋅ X = B. Se a matriz incompleta do sistema for uma matriz quadrada, o seu determinante D A é dito
determinante do sistema. Se D A ≠ 0 então a matriz A é invertivel, isto é, existe A − 1, inversa de A. Se D A
≠ 0, o sistema admite solução única e , portanto, é possível e determinado.
Representemos o sistema
{ 3a − 7b = 1
5a + 2b = 4 na forma matricial e encontremos sua solução.
In [105]:
In [106]:
X = (np.linalg.solve(A, B))
In [107]:
X #solução do sistema
Out[107]:
array([[0.73170732],
[0.17073171]])
Exercícios
[ ] [ ]
1 3 0 20 2 0
2 −1 10 13 −4 11
1. Encontre WI sendo W = eI=
3 4 10 0 5 −2
4 9 −1 0 6 0
1. Crie uma matriz 2 × 2 somente com elementos pares e calcule seu determinante.
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 27/28
5/28/2021 Algebra_Linear-Introducao(SymPy-NumPy)
{
2x + y = 5
a) x − 3y = 0
{
2a + b + c = − 1
b) a + c = 0
− 3a + 5b − c = 2
{
x+y+z+t=2
x − y − 2z − 3t = 5
c) 2x + y − 3z + t = − 9
3x − y − z + t = 6
a) H = [ ]
1
3
0
0
[ ]
1 0 0
b) I = 1 3 1
1 2 0
*Todos os conceitos, proposições e teoremas aqui apresentados foram retirados do livro cujo autor
é Seymour Lipschutz e/ou Simon e Blume
file:///home/lucas/Downloads/Algebra_Linear-Introducao(SymPy-NumPy).html 28/28