só estou interessada nos índices. Isto basta para explicar o conceito de fatiamento. 0 1 2 3 0 1 2 3 5 Lembrem-se, na NumPy, a indexação de arrays começa por zero e não por um
A é uma matriz m x n, então: • [ , : ] fornece a linha i de A; • [ ∶ , ] fornece a coluna j de A. Esta notação é idêntica à do Matlab. [1, : ] 0 1 2 3 0 1 2 3 [ ∶, 2]
uma matriz m x n, então: • [ , : ] fornece a linha i de A, a partir de j; • [ : , ] fornece a coluna j de A, a partir de i. [1,2: ] 0 1 2 3 0 1 2 3 [ 1: , 0]
abertos à direita: • [ , : ] fornece a linha i de A, iniciando na coluna j e acabando na coluna − 1. • Pense em : como o intervalo , . 0 1 2 3 0 1 2 3 4 5 [1,1: 4] : k `` = ´´ [ j, k )
foi criado por Gauss. Ele já aparece no cap. 8 do livro chinês “Os nove capítulos sobre a arte matemática”, composto por gerações de mestres ao longo dos séculos X a II A.C.
a matriz do sistema numa matriz triangular superior. É o processo de eliminação. E a 2ª etapa consiste em resolver esse sistema triangular superior, algo muito simples.
+22 2 +32 2 +42 2 +33 3 +43 3 = 2 = 3 +44 4 = 4 Mestra, da 1ª equação eu “tiro” o valor de 1 . Em seguida, substituo esse valor na 2ª equação e calculo o valor de 2 . Depois substituo esses dois valores na 3ª equação e “tiro“ 3 . Repito a ideia para a última equação (e outras, caso existam).
adições cresce de 1 a − 1, • multiplicações/divisões cresce de 1 a n . Ambos como PAs de razão 1. Logo, o total de adições é ( − 1)/2 e o e multiplicações é ( + 1)/2. Assim total de operações é 2.
são três: Somar ou subtrair linhas Multiplicar uma linha por um número real Trocar duas linhas de posição As operações elementares não alteram a solução do sistema.
superior. 11 1 + 12 2 + ⋯ + 1 = 1 = 22 2 + ⋯ + 2 = 2 ⋯ Todos os coeficientes e termos independentes são diferentes dos originais, exceto, talvez, na 1ª linha.
obtemos uma matriz referida na literatura como “matriz aumentada”. | = 11 12 ⋯ 1 1 21 22 ⋯ 2 2 ⋮ 1 ⋮ 2 ⋱ ⋮ ⋮ ⋯ A matriz aumentada contém todos os dados do problema.
2 2 ⋮ 1 ⋮ 2 ⋱ ⋮ ⋮ ⋯ Como veremos, o processo de eliminação consiste em efetuar operações elementares sobre as linhas da matriz aumentada. Linha 1 Linha 1 Linha n Ahá! Por isso o fatiamento!
2 2 … } − (1 /11 ){ 11 1 + 21 2 + ⋯ } 1 = 0 Nova linha i Linha 1 Antiga linha i Multiplic. Observem que os multiplicadores foram escolhidos de forma a anular todos os novos 1 abaixo do 11 . 1 /11 31 /11 Multiplicadores 21 /11 11 ≠ 0
multiplicações para obter 1 × ℎ 1 • − 1 adições para obter ℎ + 1 × ℎ 1 Acima temos uma linha do processo de eliminação e cada linha da matriz A é um vetor com elementos. Portanto em cada linha faremos: ℎ ℎ ℎ 1 −1 /11 × + Número real Vetor 11 ≠ 0 Vetor Vetor
anterior. Detalhe: como o objetivo é zerar o 1º coeficiente da nova linha faremos uma multiplicação e uma adição a menos. Claro, já sabemos que ele é zero !
/11 • − 1 multiplicações para obter as 1 × ℎ 1 • − 1 − 1 adições para obter as ℎ + 1 × ℎ 1 Na 1ª etapa ( = 1), eliminamos (zeramos) os coeficientes da 1ª coluna de da linha 1 para baixo. Portanto na 1ª etapa repetimos esse cálculo − 1 vezes, obtendo:
o subsistema sem a 1ª linha e a 1ª coluna. Então vamos zerar os coeficientes da 2ª coluna de A, da linha 2 para baixo. Assim por diante, até transformarmos a A na matriz triangular superior U, quando = − 1.
• Multiplicações: σ=1 −1 − 1 = Τ (3) 3 + (2) • Adições: σ=1 −1 − 1 − 1 = Τ (3) 3 + 2 + Portanto ao final do processo de eliminação o total de operações será: Somando tudo, teremos 2 × 2 /3 mais termos com 2 e .
Confiram na tabela que o número de operações na substituição é irrelevante perante o processo de eliminação quando cresce. Substituição Eliminação Soma % da eliminação 10 100 666 766 86,95 % 100 10.000 666.666 676.666 98,52 % 1.000 106 6,6667× 108 6,6767× 108 99,85 % 10.000 108 6,6667× 1011 6,6667× 1011 99.99 %
Não precisamos do loop em i. Vejam todo o 1º passo de uma só vez! [1: , 1: ] = 1: , 1: − ([1: , 1]/11 ) × [1,1: ] Linha 2 Linha 3 Linha n − × Linha 2 Linha 3 Linha n 21 /11 31 /11 ,1 /11 Linha 1 11 ≠ 0
o maior da coluna. Como os pivots de basquete. Essas operações exigem que o 11 seja não-nulo: 11 ≠ 0. Caso 11 = 0 interrompemos o processo. 1 /11 31 /11 Multiplicadores 21 /11 11 ≠ 0
é o mesmo, um sistema triangular superior para resolver. | = 11 12 ⋯ 1 1 22 ⋯ 2 2 ⋱ ⋮ ⋮ Senão, temos que examinar, também, como termo independente evolui no processo de eliminação.
atentos ! Imaginem se a consequência de um erro (descuido) em código tivesse sido esta ! Há mais de 40 anos o Rio entrava em choque com o desabamento do Elevado Paulo de Frontin, no Rio Comprido, Zona Norte do Rio. A tragédia causou a morte de 28 pessoas, deixou 30 feridas, e destruiu 17 carros. Foto: CPDoc JB
não sei ! Entretanto no código programa escrito pelo Mestre, há um descuido ! É um descuido envolvendo a comparação de números de ponto flutuante ! É do tipo “de grão em grão a galinha enche o papo! “
igualdade (que eu já havia advertido) há algo mais ! Sim, Brute, além do seu erro imperdoável, há a possibilidade do algoritmo de eliminação que você usou ser instável.
Nossos estudos sobre número de condicionamento mostraram isso! Sim minha Loirinha querida! D’agora prá frente, despreze pivots pequenos, eles estragam o jogo, no final. Sempre vá em busca dos maiores possíveis.
localizar o 1 de maior valor absoluto e trocar a linha i onde ele está com a linha 1 (na 1ª etapa). Depois repetir a ideia para as etapas seguintes nas quais o sistema restante sempre fica com 1 equação e 1 incógnita a menos.
com pivotamento parcial por coluna. Precisamos localizar a posição do pivot na coluna, em seguida realizar a troca das linhas, para depois efetuar a eliminação.