introdução aos métodos numéricosotton/graduacao/introducaonumericos/aulas_edo.pdf ·...

Post on 07-Nov-2018

222 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Introdução aos Métodos Numéricos

Instituto de Computação UFFDepartamento de Ciência da Computação

Otton Teixeira da Silveira Filho

Conteúdo

● Erros e Aproximações Numéricas

● Sistemas de Equações Lineares. Métodos diretos

● Interpolação

● Ajuste de Curvas

● Zeros de Função

● Sistemas de Equações Lineares. Métodos Iterativos

● Integração Numérica

● Introdução à Resolução de Equações Diferenciais Ordinárias

Conteúdo

● Introdução à Resolução de Equações Diferenciais Ordinárias

Conteúdo

● Conceitos básicos

● Método de Euler

● Método de Euler Melhorado

Resolução numérica de EDO‘s

Veremos aqui uma breve introdução a alguns métodos numéricos para resolver o problema de integração de uma equação diferencial ordinária no caso do problema de valor inicial, ou seja,

dydx

= f (x , y (x)); y (x0)= y0

Resolução numérica de EDO‘s

Podemos entender este problema como:

dada a derivada de uma função e quanto esta função vale em um ponto, então resolvendo esta equação obteremos a função e esta função é única

A pergunta é se podemos garantir que sempre há uma solução e esta ser única

Da matemática sabemos que nem sempre

y (x)

y (x)

Resolução numérica de EDO‘s

Supondo que a equação com que tratamos tem solução, vejamos o que podemos fazer para resolver a mesma.

Partamos da equação

e a reescrevamos como

dydx

= f (x , y (x)); y (x0)= y0

dy=f (x , y (x))dx

Resolução numérica de EDO‘s

Vamos integrar esta função usando os valores da condição inicial

onde corresponde ao ponto no qual queremos obter o valor de nossa função que seria . Integrando obtemos

∫y0

y(x1)

dy=∫x0

x1

f (x , y (x))dx

x1

y (x1)

Resolução numérica de EDO‘s

ou

y (x1)− y0=∫x0

x1

f ( x , y (x))dx

y (x1)= y0+∫x0

x1

f (x , y (x))dx

Resolução numérica de EDO‘s

A questão agora está em como calcularemos a integral genérica que aparece.

Possibilidade:

Integremos aproximadamente

Resolução numérica de EDO‘s

Partamos de algo muito simples e que sabemos ser bem impreciso: Integração por retângulo

Isto significa que o integrando deve variar “pouco“ (em algum sentido...) no intervalo de integração para este uso nos dê valores significativos para a integração

Resolução numérica de EDO‘s

Assim ficaremos com

ou

y (x1)≈ y0+ f (x0, y (x0))∫x0

x1

dx

y (x1)≈ y 0+(x1−x0) f (x0, y0)

Resolução numérica de EDO‘s

Definindo como

temos como aproximação de .

y1= y0+(x1−x0) f (x0, y0)

y1

y1 y (x1)

Resolução numérica de EDO‘s

Tendo obtido uma aproximação de , podemos tentar obter uma aproximação da mesma função no ponto vizinho ao ponto de forma que possamos fazer a integração abaixo

y (x1)

x2

x1

y (x2)≈ y1+f (x1, y1)∫x1

x2

dx

Resolução numérica de EDO‘s

Repetindo os cálculos como anteriormente teremos

e definindo como

temos este valor como aproximação de .

y (x2)≈ y1+(x2−x1) f (x1, y1)

y2

y2= y1+( x2−x1) f (x1, y1)

y (x2)

Resolução numérica de EDO‘s

Se continuarmos fazendo este procedimento, depois de i passos teremos

Faremos mais uma arbitrariedade: suporemos que todos os valores de x sejam igualmente espaçados, ou seja,

y i+1= y i+(xi+1−x i) f ( xi , y i); dado y (x0)= y0

xi+1−x i=h;∀ i

Método de Euler

Assim nossa fórmula ficará como

esta fórmula define o Método de Euler

y i+1= y i+h f ( xi , y i); dado y (x0)= y0

xi+1=x i+h

Resolução numérica de EDO‘s

Com este método conseguiremos obter valores aproximados da função nos pontosy i y (x) xi

Resolução numérica de EDO‘s

Mas veremos que ele não é tão ruim como aparenta ser por supor que a função seja constante (ou varie “pouco“ em algum sentido…) dentro do intervalo de integração

Resolução numérica de EDO‘s – Um exercício

Use o Método de Euler para calcular o valor aproximado de do problema dado abaixo usando y (1)

dydx

= y cos( x); y (0)=1

h=1,1 /2,1/4

Resolução numérica de EDO‘s – Um exercício

Comparando com o problema

com nosso problema específico

teremos que

dydx

= y cos(x); y (0)=1

dydx

=f (x , y ); y (x0)= y0

x0=0 ; y0=1 ; f (x , y )= y cos(x)

Resolução numérica de EDO‘s – Um exercício

e sendo o Método de Euler dado por

no nosso caso terá a forma

x0=0 ; y0=1 ; f (x , y )= y cos(x)

y i+1= y i+h f ( xi , y i)

y i+1= y i+h y i sen(x i);dado y (0)=1

xi+1=x i+h

xi+1=x i+h

Resolução numérica de EDO‘s – Um exercício

h = 1

Teremos

e como é uma aproximação de e sendo

então e este é o nosso resultado para h = 1

y1= y0+1× y0 cos(x0)=1+1×1×cos(0)=2

y i+1= y i+h yi cos(xi);dado y (0)=1

y1 y (x1)

x1=x0+h=0+1=1

y (1)≈2

Resolução numérica de EDO‘s – Um exercício

h = 1/2

Teremos

e como é uma aproximação de e sendo

então .

y1= y0+12× y0 cos (x0)=1+

12×1×cos(0)=1,5

y i+1= y i+h yi cos(xi);dado y (0)=1

y1 y (x1)

x1=x0+h=0+12=

12

y ( 12 )≈1,5

Resolução numérica de EDO‘s – Um exercício

h = 1/2

Teremos

e como é uma aproximação de e sendo

então .

y2= y1+12× y1 cos(x1)=1,5+

12×1,5×cos(1/2)=2,158186

y i+1= y i+h yi cos(xi);dado y (0)=1

y2 y (x2)

x2=x1+h=12+

12=1

y (1)≈2,158186

Resolução numérica de EDO‘s – Um exercício

h = 1/4

Teremos

e como é uma aproximação de e sendo

então .

y1= y0+14× y0 cos (x0)=1+

14×1×cos(0)=1,25

y i+1= y i+h yi cos(xi);dado y (0)=1

y1 y (x1)

x1=x0+h=0+14=

14

y ( 14 )≈1,25

Resolução numérica de EDO‘s – Um exercício

h = 1/4

Teremos

e como é uma aproximação de e sendo

então .

y2= y1+14× y1 cos(x1)=1,25+

14×1,25×cos(1/4 )=1,552785

y i+1= y i+h yi cos(xi);dado y (0)=1

y2 y (x2)

x2=x1+h=14+

14=

12

y ( 12 )≈1,552785

Resolução numérica de EDO‘s – Um exercício

h = 1/4

Teremos

e como é uma aproximação de e sendo

então .

y3= y2+14× y2 cos(x2)=1,552785+

14×1,552785×cos(1 /2)=1,893459

y i+1= y i+h yi cos(xi);dado y (0)=1

y3 y (x3)

x3=x2+h=12+

14=

34

y ( 34 )≈1,893459

Resolução numérica de EDO‘s – Um exercício

h = 1/4

Teremos

e como é uma aproximação de e sendo

então .

y4= y3+14× y3 cos(x3)=1,893459+

14×1,893459×cos(3 /4)=2,239815

y i+1= y i+h yi cos(xi);dado y (0)=1

y4 y (x 4)

x4=x3+h=34+

14=1

y (1)≈2,239815

Resolução numérica de EDO‘s – Um exercício

No momento temos três estimativas para , para valores diferentes de h:

Comparemos com a solução exata

y (1)

y (1)≈2(h=1) ; y (1)≈2,158186 (h=12 ) ; y (1)≈2,239815 (h=1

4 )

y (x)=esin( x)⇒ y (1)=esin (1)

=2,319776

Resolução numérica de EDO‘s – Um exercício

Observe que quando diminuimos h os resultados se aproximam do resultado exato.

O método de Euler mostra que é eficaz, embora não muito preciso, com valores de h relativamente grandes.

Método de Euler melhorado

Voltemos ao problema original, ou seja,

e integremos como antes para determinar

dydx

= f (x , y ( x)); y (x0)= y0

y (x1)= y0+∫x0

x1

f (x , y (x))dx

y (x1)

Método de Euler melhorado

Diferente do que fizemos antes, usaremos como aproximação o valor no ponto médio do intervalo que, como vimos em integração numérica, nos dá maior precisão. Portanto faremos

Temos um problema: como calcularemos ?

y (x1)≈ y0+ f (x0+h2, y (x0+

h2))∫

x0

x1

dx=h f (x0+h2

, y (x0+h2));h=x1−x0

y ( x0+h2 )

Método de Euler melhorado

Observe que todos os cálculos aqui são aproximados. Usaremos uma aproximação usando o Método de Euler para calcularmos

ou seja,

y ( x0+h2 )

y1/2= y0+h2

f (x0, y0);onde y1/2≈ y (x0+h /2)

Método de Euler melhorado

Com isto poderemos escrever

Um estudo mais cuidadoso demonstraria que este cálculo é bem embasado.

y (x1)≈ y0+h f (x0+h2, y0+

h2

f (x0, y0))

Método de Euler melhorado

Uma forma mais usual de apresentação deste método é

onde é uma aproximação de .

y1= y0+h k2

k2= f (x0+h2, y0+

h2k1)

k1= f (x0, y0)

y1 y (x1)

Método de Euler melhorado

Se fizermos o mesmo que antes, ou seja, usarmos o valor obtido para obter uma aproximação em e daí obtermos mais e mais pontos, poderemos descrever este método da seguinte forma

y1 y (x2)

Método de Euler melhorado

Método de Euler melhorado

y i+1= y i+hk 2

k2= f (x i+h2, y i+

h2k1)

k1= f (x i , y i)

xi+1=x i+h

Método de Euler melhorado – Um exercício

Use o Método de Euler melhorado para calcular o valor aproximado do problema dado abaixo usando

h=1,1 /2dydx

= y cos( x); y (0)=1

Método de Euler melhorado – Um exercício

h = 1

Pelo que já vimos antes escreveremos

ou seja, o valor obtido para é uma aproximação de

k1=f (x0 , y0)= y0 cos (x0)=1cos(0)=1

k 2=f (x0+h2; y0+

h2k1)=f (0+

12;1+

12×1)=f (1

2; 3

2)=

32×cos ( 12 )=1,316373

y1= y0+h k2=1+1×1,316373=2,316373

x1=x0+h=0+1=1

y1 y (1)

Método de Euler melhorado – Um exercício

h = 1/2

Da mesma maneira que anteriormente teremos

ou seja, o valor obtido para é uma aproximação de

k1=f (x0, y0)= y0 cos(x0)=1cos(0)=1

k 2=f (x0+h2; y0+

h2k1)=f (0+

14;1+

14×1)=f ( 1

4; 5

4)=

54×cos ( 1

4 )=1,211140

y1= y0+h k2=1+12×1,211140=1,605570

x1=x0+h=0+12=

12

y1 y (1 /2)

Método de Euler melhorado – Um exercício

h = 1/2

continuando...

ou seja, o valor obtido para é uma aproximação de

k1=f (x1 , y1)= y1 cos( x1)=1,605570 cos(1 /2)=1,409020

k 2=f (x1+h2, y1+

h2k1)=f (

12+

14;1,605570+

14×1,409020)=f (

34,

1,957825)

y2= y1+h k2=1,605570+12×1,432518=2,321829 x2=x1+h=

12+

12=1

y2 y (1)

k 2=f ( 34;1,957825 )=1,957825∗cos ( 3

4 )=1,432518

Método de Euler melhorado – Um exercício

Agora comparemos com os resultados obtidos pelo método de Euler

os valores obtidos pelo método de Euler melhorado

e o valor exato

y (1)≈2,316373 (h=1 ) ; y (1)≈2,321829 (h=12)

y (1)≈2(h=1); y (1)≈2,158186 (h=12 ) ; y (1)≈2,239815 (h= 1

4 )

y (x)=esin( x)⇒ y (1)=esin (1)

=2,319776

Resolução numérica de EDO‘s

Vemos claramente que com um esforço computacional equivalente, o método de Euler melhorado com h = ½ obtem um resultado mais preciso que o método de Euler com h = ¼ .

Resolução numérica de EDO‘s

Os Métodos de Euler e Euler Melhorado fazem parte de um conjunto de métodos de resolução numérica de EDO‘s conhecidos como Métodos de Runge-Kutta

● Euler é um método cujo o erro é proporcional a

● Euler melhorado é um dos métodos de Runge-Kutta cujo erro é proporcional a

h

h2

Resolução numérica de EDO‘s

Podemos dividir grosseiramente os métodos existentes para resolução de EDO‘s em

● Métodos de passo simples como os de Runge-Kutta

● Métodos de passo múltiplo como os de Adams-Bashforth

● Métodos de extrapolação como os de Bulirsch-Stoer

Mas há outras técnicas além destas

Resolução numérica de EDO‘s

Cada um destes métodos tem virtudes e problemas e existem métodos criados para situações específicas

Resolução numérica de EDO‘s

Embora aqui tenhamos apresentado a resolução de uma EDO, estas mesmas técnicas podem ser usadas para resolver numericamente sistemas de Equações Diferenciais Ordinárias

Resolução numérica de EDO‘s

Apresentemos sistemas de equações diferenciais com um exemplo de um sistema de três equações

Resolução numérica de EDO‘s

Um sistema dado por

pode ser escrito como

dαdx

= f⃗ α(x ,α(x) ,β(x) ,γ(x));α(x0)=α0

dx= f⃗ z (x ,α(x),β(x) ,γ(x ));β(x0)=β0

d γ

dx= f⃗ w (x ,α(x) ,γ(x) ,γ(x));γ(x0)=γ0

Resolução numérica de EDO‘s

Um sistema em forma vetorial

onde

, as funções dependentes

, condições iniciais

, funções relativas a cada equação

d y⃗dx

= f⃗ (x , y⃗ (x)); y⃗ (x0)= y⃗ 0

y⃗=(α ,β ,γ )

y⃗0=(α0 ,β0 ,γ0 )

f⃗ = ( f α , f β , f γ )

Resolução numérica de EDO‘s

Apresentaremos o esquema para resolução numérica deste sistemas de equações diferencias ordinárias para o Método de Euler. Será análogo para qualquer outro método.

Resolução numérica de EDO‘s

Primeiro escrevamos a equação e o Método de Euler para uma única equação dada por

dydx

= f (x , y (x)); y (x0)= y0

y i+1= y i+h f (xi , y i)

xi+1=x i+h

Resolução numérica de EDO‘s

Sistema de equações e Método de Euler em forma vetorial

d y⃗dx

= f⃗ ( x , y⃗ (x)); y⃗ (x0)= y⃗ 0

y⃗ i+1= y⃗ i+h f⃗ (xi , y⃗ i)

xi+1=x i+h

Resolução numérica de EDO‘s

Ou seja,

ou mais explicitamente

αi+1=αi+h f α(xi , y⃗i)

βi+1=βi+h f β(xi , y⃗i)

γi+1=γi+h f γ(xi , y⃗i)

αi+1=αi+h f α(xi ,αi ,βi ,γi)

βi+1=βi+h f β(xi ,αi ,βi ,γi)

γi+1=γi+h f γ(xi ,αi ,βi ,γi)

Resolução numérica de EDO‘s

Vejamos um exemplo clássico: O sistema Presa-Predador elaborado por Lotka e Volterra

Resolução numérica de EDO‘s

Sistema Presa-Predador

Onde P é a população de uma presa e Q é a população de predadores que iteragem

dPdt

=(α0−β0Q ) P; P (t 0)=P0

dQdt

=(−α1−β1 P )Q ;Q (t 0)=Q0

Resolução numérica de EDO‘s

No caso do Método de Euler escreveremos

dados

Pi+1=P i+h (α0−β0Qi ) P i

Qi+1=Qi+h (−α1−β1 Pi )Qi

t i+1=t i+h

P (t 0)=P0 ;Q (t 0)=Q0

Resolução numérica de EDO‘s

E como seria no Método de Euler Melhorado?

Método de Euler melhorado

Método de Euler melhorado para uma equação

e para um sistema de equações se escreverá como

y i+1= y i+hk 2

k 2=f (x i+h2, y i+

h2k1)

k 1=f (xi , y i)

x i+1=x i+h

Método de Euler melhorado

Método de Euler melhorado para um sistema

y⃗ i+1= y⃗ i+h k⃗ 2

k⃗ 2= f⃗ (xi+h2

, y⃗ i+h2

k⃗1)

k⃗ 1= f⃗ 1(x i , y⃗ i)

x i+1=x i+h

Resolução numérica de EDO‘s

Façamos uma ilustração com o problema Presa-Predador

Resolução numérica de EDO‘s

Sistema Presa-Predador

Onde P é a população de uma presa e Q é a população de predadores que iteragem

dPdt

=(α0−β0Q ) P; P (t 0)=P0

dQdt

=(−α1−β1 P )Q ;Q (t 0)=Q0

Resolução numérica de EDO‘s

No caso do Método de Euler Melhorado escreveremos

onde

Pi+1=P i+hk 2P

Qi+1=Qi+hk 2Q

t i+1=t i+h

k 1P=f P(t i ,P i ,Q i)

k 2P=f P(t i+h2,

P i+h2k1 P ,Q i+

h2

k1Q)

k 1Q=f Q (t i ,P i ,Q i)

k 2Q= f Q (t i+h2,

P i+h2k1 P ,Q i+

h2

k1Q)

f P(t i , Pi ,Qi)=[α0−β0Q(t)]P(t ); f Q(t i , P i ,Q i)=[−α1+β1P(t )]Q (t )

Resolução numérica de EDO‘s

Agora ilustremos o que podemos fazer para resolver uma equação diferencial de qualquer ordem com uma equação de segunda ordem, usando os métodos apresentados

Resolução numérica de EDO‘s

Seja uma equação de segunda ordem com o seguinte problema de valor inicial

Escrevamos esta equação da seguinte maneira

d3 ydx3 =f ( x , y (x),

dydx

,dy2

dx2 ) ; y (x0)= y0 ;dydx

|x=x0=z0 ;

dy2

dx2=w0

Resolução numérica de EDO‘s

O que fizemos foi nomerar a derivada primeira de y como uma função z e w como derivada de z. Caimos num sistema de três equações de primeira ordem que sabemos como resolver

d zdx

=w (x);dydx

|x=x0=z (x0)=z0

d ydx

=z( x); y (x0)= y0

dwdx

=f ( x , y (x) , z (x)) ;dy2

dx2|x=x0

=w ( x0)=w0

Resolução numérica de EDO‘s

Ilustremos com a equação do pêndulo simples

Reescrevamos esta equação da seguinte maneira

d2θ

dx2=−sen( y) ;θ( x0)=θ0 ;

d θ

dt|t=t 0

=ω0

Resolução numérica de EDO‘s

As quais podemos resolver numericamente com as técnicas vistas

dt=−sen(θ);ω(t0)=ω0

d θ

dt=ω(t) ;θ(t0)=θ0

top related