• Nenhum resultado encontrado

Universidade Federal de Minas Gerais. Física Computacional

N/A
N/A
Protected

Academic year: 2021

Share "Universidade Federal de Minas Gerais. Física Computacional"

Copied!
35
0
0

Texto

(1)

FIS045

Métodos Computacionais em física

Cap 5: Algebra linear

Prof. Gustavo Guerrero (sala 4120)

e-mail para enviar as listas de exercicios:

s045.ufmg@gmail.com

Universidade Federal de Minas Gerais

2017

(2)

Algebra linear

Nesse capitulo estudamos a forma de manipular matrices e vetores numéricamente. Usando esses objetos aprendemos como resolver sistemas de equações lineares que aparecem em muitas áreas da ciência. Mesmo estudando a forma de resolver sistemas de equações usando matrizes, a sugestão é usar bibliotecas de rotinas sosticadas que facilitam esse trabalho: e.x. LAPAC (http://www.netlib.org), Blitz++ (http://www.oonumerics.org), Armadilho (http://arma.sourceforge.org).

(3)

Lembrando as propriedades matemáticas das

matrizes

Trabalharemos com matrizes do tipo A de n × n elementos, sendo A real ou complexa. Ex:

, O inverso dessa matriz, se existe, é tal que A−1·A = I. a

ij se refer a um

elemento da matriz na la i e na columna j. Um vetor é um array unidimensional, x, da forma:

(4)

Propriedades das matrizes

,

I Uma matriz é diagonal sim: aij=0 para i 6= j. I upper triangular sim: aij =0 para i > j.

(5)

Propriedades das matrizes

I Lower triangular sim: aij=0

para i < j

I Tridiagonal sim: aij=0 para

|i − j| >1

1. Se o inverso de uma matriz A existe, A é não singular. 2. A equação Ax = 0, implica x = 0

3. 0 não é um autovalor de A .

4. As las de A formam uma base de Rn

(6)

Operações básicas com matrizes

I

Soma e substração: A = B ± C → a

ij

= b

ij

± c

ij

.

,

I

Multiplicação de uma matriz por um escalar:

A = γB → a

ij

= γb

ij

,

I

Multiplicação de um vetor por uma matriz:

y = Ax → y

i

=

P

nj =1

a

ij

x

j

,

I

Multiplicação matriz-matriz: A = BC → a

ij

=

P

n

k=1

b

ik

c

kj

,

I

Transposção: A = B

T

→ a

ij

= b

ji

,

I

Se A ∈ C

n×n

, a conjugação resulta em: A = B

T

→ a

ij

= b

ji

,

onde z = x − iy é o complexo conjugado de z = x + iy.

(7)

Operações básicas com vetores

I

Soma e substração: x = y ± z → x

i

= y

i

± z

i

.

,

I

Multiplicação de um vetor por um escalar: x = γy → x

i

= γy

i

,

I

Multiplicação de um vetor por um vetor: x = yz → x

i

= y

i

z

i

,

I

Produto escalar: c = y

T

z → a = P

nj =1

y

j

z

j

,

I

Produto externo: A = yz

T

→ a

ij

= y

i

z

j

,

I

Norma de um vetor: ||x||

p

= (|x

1

|

p

+ |x

2

|

p

+ ... + |x

n

|

p

)

1/p

.

I

Relação de Cauchy-Schwartz para todo x real ou complexo, o

produto interno satisfaz: |x

T

y| ≤ ||x||

2

||y ||

2

, a partir da qual

temos

I

que para todos x e y, o produto escalar satisfaz

(8)

Declaração de matrizes e vetores

I em C++ usamos:

I em Fortran usamos:

Mas

CUIDADO

: C++ escreve primeiro as las e Fortran primeiro

as colunas

(9)
(10)

Assim, para somar duas matrizes

I em C++ usamos:

I em Fortran usamos:

Note que C++ começa contar os elementos de vetores e matrizes no 0, enquanto Fortran começa (por defeito) no 1. Assim o primeiro elemento de A em C++ será a[0][0] e em Fortram sera a(1, 1).

(11)

Para multiplicar duas matrizes

I em C++ usamos:

(12)

Alocação dinâmica de memôria

Em C++ criamos as matrizes assim:

Uma vez utilizadas as apagamos da memoria

Em Fortran sao criadas usando ALLOCATABLE

(13)

Sistemas lineares

O problema mais básico a ser resolvido usando matrizes é do tipo: Ax = b , AN×N xN×1=bN×1

A melhor forma de resolver esse sistema é usando decomposição Gaussiana ou LU (lower-upper). Outro método é determinar a matriz inversa de A, e encontrar a solução multiplicando ambos os lados da equação por A−1:

x = A−1b ,

Se o problema a ser resolvido tém a forma: Ax = λx ,

sendo x desconhecido e λ um parâmetro desconhecido, o sistema é um problema de autovalores no qual a solução existe unicamente para certos valores de λ. Usamos a matriz identidade para reescrever a equação como:

(14)

O sistema tém a solução trivial x = 0. Há outra solução que requer a existência de uma condição que proibe multiplicar ambos os lados da equação acima por [A − λI]−1. (A condição da não existência do

inverso). Essa condição é cumplida quando: det[A − λI] = 0 ,

Os valores de λ que satisfazem essa condição são os autovalores procurados.

Nesse caso são necessárias rotinas que calculem o determinante de uma matriz e os zeros de um sistema de equações.

(15)

Eliminação Gaussiana

Nosso sistema de equações é:

Ax = w , D AN×N xN×1=wN×1

(16)

A ideia é usar a primeira equação para eliminar x1 das n − 1 equações

restantes. Logo, usamos a segunda equação para eliminar x2 das n − 2

equações restantes. Com n − 1 eliminações do tipo encontramos uma matriz triangular da forma:

(17)

Para chegar ao sistema upper triangular começãmos elimnando x1para

j =2, ..., n. Fazemos isso multiplicando x1 por aj1/a11 e depois

substraindo o resultado da equação jesima. Para o caso teremos:

Com b1k = a(1k1)para k = 1, ..., n. Os outros coecientes serão:

a(jk2)= ajk(1)−a (1) j1a (1) 1k a(111) , j , k =2, ..., n.

(18)

O novo lado direito da equação será: y1= w1(1), wj(2)= wj(1)−a (1) j1w (1) 1 a11(1) , j , k =2, ..., n.

O sistema de x1, ..., xn desconhecidos transforma-se assim num sistema

(n −1) × (n − 1). Uma expresão geral para substituição direta é:

Com m = 1, ..., n − 1, e para o lado direito:

Se valores pequenos (ou zeros) aparecem na diagonal da matriz, podem ser removidos reorganizando a matriz e os vetores permutando las e colunas. Esse procedimento se chama pivoting.

(19)

Decomposição LU (lower-upper)

É uma forma de eliminção Gaussiana. A ideia é decompor a matriz A em termos de uma matriz L com elementos só embaixo da diagonal, e uma matriz U contendo a diagonal e os elementos acima dela.

A matriz A tem decomposição LU se o determinante é diferente de zero. Se a factorização LU existe, e A é não singular, o determinante é dado por det{A} = u11u22...unn, a demonstração pode ser encontrada em G.

(20)

O algoritmo para obter as matrizes L e U é simples: começando pela primeira coluna, nosso exemplo (4 × 4) ca:

De onde podemos determinar os elementos: u11, l21, l31e l41. Da

segunda coluna temos:

De onde podemos determinar os elementos: u12, u22, l32e l42.

(21)

Um algoritmo para decompor uma matriz deve ter os seguintes passos: Começando pela primeira coluna,

para cada j. I Calculamos o primeiro elemento u1j= a1j I Calculamos os elementos uij, para i = 2, ..., j − 1. uij= aij− i −1 X k=1 likukj

I Depois calculamos a diagonal

da matriz ujj = ajj− j −1 X k=1 ljkukj I Finalmente calculamos os elementos lij, para i > j: lij= 1 ujj aij− j −1 X k=1 likukj ! .

(22)

Como usar a decomposição LU em sistemas lineares de

equações

Queremos resolver um sistema do tipo: Ax = w, ou,

Usando a decomposição LU escrevemos:

Ax = LUx = w

Essa equação pode ser calculada em dois passos:

(23)

Determinante e inverso de uma matriz

A denição básica do determinante é:

Já calcular o inverso de uma matriz de una matriz n × n é mais

difícil: precisamos calcular o cofactor complementario a

ij

para cada

elemento a

ij

. Este é o determinante de ordem (n − 1) obtido

cobrindo a la i e a coluna j na qual o elemento a

ij

aparece. O

inverso é então a transposta da matriz com elementos (−)

i +j

aij

.

(24)

Para uma matriz 3 × 3 :

O determinante é (veja exemplo no quadro):

Note que para calcular essa matriz precisamos calcular n2determinantes.

(25)

Usando o a decomposição LU da matriz A é mais simples encontrar o determinante.

det{A} = det{L} × det{U} = det{U}

pois os elementos da diagonal de L sao igual a 1. Logo o determinante pode ser calculado como

det{A} =

N

Y

k=1

ukk.

Encontrar a inversa de uma matriz consiste agora em resolver um grupo de equações lineares. Note que se a inversa da matriz existe, A−1A = I.

Que pode ser escrito como:

LUA−1=I .

Podemos então assumir que a primeira coluna da matriz inversa pode ser escrita como um vetor com componentes desconhecidas:

(26)

Podemos então assumir que a primeira coluna da matriz inversa pode ser escrita como um vetor com componentes desconhecidas:

(27)

Sistema tridiagonal de equações

Um sistema linear de equações da forma:

Au = f , Onde A é uma matriz tridiagonal da forma:

(28)

Um algoritmo para resolver o sistema tridiagonal faz O(n) opearações, enquanto eliminação Gaussiana requer 2n3/3 + O(n2). Pode ser escrito

(29)

Interpolação cubic splines

Permite encontrar valores intermediarios em um conjunto de dados usando polinomios cubicos.

(30)

Assuma que temos n + 1 pontos, x0, x1, ..., xn, tal que x0< x1< ... < xn.

Uma função spline, s de ordem k, com n + 1 pontos é denida como:

I Em cada sub-intervalo [xi −1, xi), s é um polinomio de grau k. I s têm k − 1 derivadas continuas no intervalo total [x0, xn].

A função spline mais comum é aquela com k = 3, ou spline cúbico. Se alem dos n + 1 pontos temos os valores da função

y0= f (x0), y1= f (x1), ..., yn= f (xn). Por denição, os polinomios

devem interpolar o mesmo ponto:

si −1(xi) = yi= si(xi) ,

Com 1 ≤ i ≤ n − 1. No total temos n polinomios do tipo: si(x ) = ai0+ ai1x + ai2x2+ ai3x3,

o que implica que teremos 4n coecientes para determinar. Cada sub-intervalo possui duas condições:

yi= s(xi) e yi +1= s(xi +1) ,

(31)

Já que s0 e s00 são continuas, temos:

si −0 1(xi) = si0(xi) ,e si −001(xi) = si00(xi)

proporcionando n − 1 e n − 1 condições, respetivamente. No total temos 4n coecientes e 4n − 2 equações, precisamos ainda determinar 2 graus de liberdade.

Partindo da ultima equação denimos dois valores para a segunda derivada:

si00(xi) = fi ,e si00(xi +1) = fi +1

Uma linha reta entre os pontos fi e fi +1é:

(32)

Substituindo as condições si(xi) = yi e si(xi +1) = yi +1na equação acima,

podemosdeterminar as constantes c e d, o que resulta em:

Mas como determinamos as segundas derivadas fi e fi +1? Usando a

condição de continuidade para a primeira derivada: si −0 1(xi) = si0(xi) ,

(33)

Finalmente fazemos a mudança de viriável: ui=2()hi+ hi −1,

νi= h6

i(yi +1− yi) −

6

hi −1(yi− yi −1), podemos re-escrever o problme

como um conjunto de equações que pode ser resolvido usando eliminação Gaussiana para uma matriz tridiagonal.

(34)

Exercicios, entrega: Maio 5 de 2017

1. (a) Escreva uma função que calcule o inverso de uma matriz usando decomposição LU. (b) Depois escreva um programa que utilize esta função para calcular o inverso da seguinte matriz:

A =   +4 −2 +1 +3 +6 −4 +2 +1 +8  

Verique que sua resposta esta correta fazendo AA−1=I, e

A−1A = I para isso, utilize o programa para multiplicar matrizes.

2. Utilizando a matriz A, resolva agora sistemas de equações Ax = b, para os 3 casos seguintes:

b1= (+12, −25, +32) , b2= (+4, −10, +22) , b3= (+20, −30, +40)

As respostas devem ser:

x1= (+1, −2, +4) , x2= (+0.312, −0.038, +2.677) ,

(35)

3.

(a) Escrevaa um programa que calcule a interpolação splines

cúbica usando as rotinas spline e splint. A rotina spline faz a

aproximação polinomial, a rotina splint usa os polinomios para

encontrar um valor interpolado para uma função.

(b) Considere a função y = (x − 3)

2

, calculada nos pontos

x = (

2, 3, 4). Use o seu programa para encontrar os valores de

y

em 20 pontos no intervalo [2, 4].

Referências

Documentos relacionados

Durante as nictemerais, os valores do fósforo total e do fosfato total nos dois viveiros apresentaram também valores acima do recomendado pela GAA, exceto para o fosfato total na

Distribuição espectral dos sistemas de iluminação LED e do controle Observa-se na Figura 12A, a análise de componentes principais, relacionado à biometria das mudas pré-brotadas

A respeito das propostas de desregulamentação nas relações de trabalho e da seguridade social no Brasil, percebidas tanto nas defesas do Banco Mundial quanto nas

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

Considerando a relação que se estabelece entre os processos de desenvolvimento e aprendizagem, configurados numa situação incomum de total isolamento social, refletiu-se sobre

Um estudo longitudinal constatou correlações positivas entre a atenção dos pais a seus bebês de 6 meses de idade, medida pela HOME, e QI e escores em testes de desempenho aos 10

Entretanto, mesmo partindo do pressuposto de que as interações humanas são constitutivas do psiquismo do homem, na tríade aluno/mestre/conhecimento, dada sua

Atualmente os currículos em ensino de ciências sinalizam que os conteúdos difundidos em sala de aula devem proporcionar ao educando o desenvolvimento de competências e habilidades