Вы находитесь на странице: 1из 49

Resoluo de sistemas lineares com scipy.

linalg
Prof. Paulo R. G. Bordoni

UFRJ

Mestre, achei o caminho das pedras.


Muito mais que isto, percebi claramente a importncia das bibliotecas BLAS e LAPACK !

Pois Surfista, a histria mostra que, desde 1947, a comunidade de Computao Cientfica, tem trabalhado arduamente no desenvolvimento da lgebra Linear Computacional. Em particular na resoluo de sistemas lineares.

Mestre, no tocante a resoluo de sistemas lineares, proponho adotarmos a ttica de operacionalizar primeiro. Depois vamos analisar os aspectos tericos.

No gosto muito dessa ideia, mas como acredito na sua experincia didtica, concordo!

Rotinas bsicas

Voltando ento s rotinas bsicas do Tutorial, foquemos nossa ateno no tpico Resolvendo sistemas lineares.

Achando a inversa Resolvendo sistemas lineares Achando o determinante Calculando normas Resolvendo problemas lineares de mnimos quadrados e pseudo-inversas

Inversa generalizada

Surfista, a orientao do Tutorial da scipy.linalg usar a solve( ) [e no a inversa, inv( )] para obter a soluo de um sistema linear.

Se mais rpido porqu envolve menos operaes, mas como cont-las?

O que estabilidade numrica, Mestre?

O Surfista est certo, Mestra. Eis a uma razo para no operacionalizarmos s cegas.

Resmungo...

Loirinha querida, mais adiante estudaremos erros, propagao de erros e estabilidade numrica.

Recortei as rotinas bsicas na Referncia do scipy.linalg para resoluo de sistemas lineares. Alm da solve( ), existem rotinas apropriadas para matrizes com caracterstica especiais.

Diagonal Quando todos os seus elementos fora da diagonal so nulos: = 0 Alis existe toda uma fauna de matrizes = [ ] cujas definies devemos recordar: Triangular inferior Quando todos os elementos acima da diagonal so nulos: < = 0

Triangular superior Quando todos os elementos abaixo da diagonal so nulos: > = 0

Exemplos:

Diagonal 3x3 2 0 0 3 0 0 0 0 6

Triangular superior 5x5 1 0 0 0 0 4 3 0 0 0 2 1 5 0 0 5 0 9 2 0 2 7 3 1 4

Triangular inferior 4x4 3 0 1 8 0 3 4 2 0 0 2 5 0 0 0 1

Simtrica Quando igual sua transposta: = .

Continuando no zoolgico: Definida positiva

Quando satisfaz:

0 =
,=1

> 0

Ortogonal Quando sua transposta a inversa: = 1 = =

1 0 0 A matriz A = 0 2 0 0 0 3 no definida-positiva, pois se = temos:

1 0 0 2 0 0

0 0 3

= 2 = 2 2 2 + 3 2 3 e escolhendo = 1 2 0 obtemos = 0.

5 1 2 2 2 A matriz = 1 2 2 3 definida-positiva, pois para = temos:


2

+ + 2

+ 2 + 2 ,

uma soma de quadrados, que s se anula para = = 0 0 0 . Surfista, confira essa afirmao da Mestra!

A matriz sen = cos 0 cos sen 0 0 0 1

ortogonal pois : = sen cos cos sen 0 0

sen cos 0

cos sen 0

0 0 1

0 0 1

1 0 = 0 1 0 0

0 0 1

Loirinha, agora tua vez de conferir a afirmao da Mestra!

Examinando as informaes sobre o comando solve( ).

Este programa recebe uma matriz A e um vetor b. Em seguida, chama solve(A,b) para resolver o sistema linear A*x = b.

Outra forma de obter informaes do solve( )

Esta rotina apropriada para resolver sistemas triangulares.

Ela mais rpida!

O detalhamento dos seus parmetros.

Eis uma forma de calcular a inversa de uma matriz triangular superior.

Mestra esse algoritmo para achar a inversa vlido para qualquer tipo de matriz, no?

Sim minha filha e o mais rpido!


Mas voc tem que usar o solve( ) para um sistema cuja matriz no possui caractersticas particulares.

Uma matriz = [ ] possui banda inferior k quando = 0 para > . E possui banda superior k, quando = 0 para > . Eis uma matriz A com banda inferior 2 (em laranja) e banda superior 1 (em verde): = 0 0 0 0 0 0 0 0 0

A ao para armazenar uma matriz de banda como essa esquecer os zeros e deixar cair! Vejam s:

= 0 0 0 0 0 0 0 0 0

Se A uma matriz 100x100 teramos 10.000 elementos para armazenar.


Nesse armazenamento de banda precisaremos apenas de 4x100-4

Esta rotina especfica da scipy.linalg para resolver sistemas lineares cuja matriz de banda.

Novamente, os detalhes sobre os parmetros

Um programa usando a solve_banded( )

Uma execuo do programa.

Uma 2 execuo do programa.

Adjunta A adjunta de = [ ], anotada AH, definida por = [ ]. a conjugada da transposta.

Um zoolgico bem complexo: Hermitiana, ou auto-adjunta

Quando satisfaz: = . a correspondente de uma matriz simtrica, com elementos complexos,


Unitria Quando sua adjunta a inversa: = 1 = =

E esta apropriada para matrizes hermitianas e positivo-definidas.

Detalhamento dos parmetos.

Exemplo do Tutorial da scipy.linalg

Agora vamos explorar as fatoraes (Decompositions) existentes no Linear Algebra.

Basic routines Decompositions

A famosa fatorao LU.

A famosa fatorao LU continuao.

Rotinas existentes no Reference Guide para a fatorao LU.

Esta uma das rotinas do linalg para realizar a fatorao PLU. Ela s realiza a fatorao; no apresenta a soluo.

A rotina pode efetuar o pivoteamento por linha (ou no). Ela retorna: as trs matrizes P, L e U ou apenas duas, a PL que a triangular inferior permutada e a U.

Esta uma rotina alternativa anterior.

Ela recebe a matriz A e retorna uma matriz contendo a fatorao LU e um vetor contendo os ndices de pivoteamento.

Os parmetros retornados.

Esta rotina recebe a fatorada LU e o vetor piv fornecidos pela LU_factor( ). Recebe tambm o termo independente b e retorna a soluo x.

Uma brevssima explicao do que a fatorao de Cholesky.

As rotinas do SciPy para a fatorao de Cholesky.

A explicao para passagem de parmetros.

Esta rotina s efetua a fatorao. Deve ser usa com a prxima.

Esta rotina resolve o sistema aps fatorado pela rotina cho_factor( ).

Esta especfica para matrizes de banda. S fatora.

Esta resolve o sistema linear, aps a fatorao pela cholesky_banded( ).

Aguardem, mais transparncias viro!

Вам также может понравиться