Você está na página 1de 7

Primeira Lista de Exerccios de Mtodos Numricos II

Primeiro semestre de 2015

Introduo

Antes de apresentar a lista, introduzirei alguns problemas j vistos em sala de aula


para orientar e facilitar a soluo dos problemas propostos. Um programa novo foi
colocado na pgina da disciplina com o nome de Euler_heun_rk4.c. o mesmo
programa apresentado em sala de aula e que contm a implementao dos mtodos de
Euler, Heun e Runge-Kutta clssico de quarta ordem de forma a podermos comparar as
questes relativas estabilidade condicional dos mtodos e as sensibilidades de cada
um. Descreverei cada um dos exemplos, valores dos parmetros usados e o que pode ser
observado. Para simplificar ao mximo a experimentao numrica, mantenho as
condies iniciais iguais para todos os casos. As indicaes de compilao e descarga da
sada do arquivo so deixadas em aberto pois estas podem variar dependendo da
ferramenta usada por voc. As indicaes feitas na gerao de grficos leva em conta
que a ferramenta usada o gnuplot.

A escolha pelo gnuplot se deu pelo fato dele, um programa criado em 1986, estar
em plena evoluo e aperfeioamento at a data de hoje. Alm disto, existem verses
para a grande maioria das plataformas existentes. Assim, no h risco de
incompatibilidades no processo de gerao e verificao dos grficos. No entanto, voc
est livre para usar qualquer outra ferramenta de criar grfico desde que no seja
numa planilha. As particularidades de cada planilha podem gerar uma dificuldade extra
no processo de correo dos trabalhos.

Suporei que o nome do arquivo gerado em todos os casos seja ehr.dat. O


programa gera um arquivo constitudo de quatro colunas: a primeira so os valores de x, a
segunda os valores de y segundo o mtodo de Euler, a terceira coluna tem os valores
dados pelo mtodo de Heun e a quarta os valores obtidos pelo mtodo de Runge-Kutta
clssico de quarta ordem que ser indicado no restante do texto como RK4. A gerao
dos grficos ser ilustrada pelo uso do gnuplot em linha de comando. So simples as
adaptaes para o gnuplot usando sistemas de janelas. Na pgina da disciplina voc
encontrar indicao de manuais e tutoriais do gnuplot.

dy
I) = y ; y (0)=1
dx
x
Este um caso muito simples do qual a soluo analtica y ( x)=e . Neste
exemplo iniciamos por usar h = 1 / 2 e o valor de x final ser 5. Ao gerar o grfico usando
o comando

gnuplot> plot ehr.dat u 1:2 w l, ehr.dat u 1:3 w l,ehr.dat u 1:4 w l

voc ver trs curvas indicadas nas legendas com cada coluna usada. Voc notar que
os valores dados pelo mtodo de Euler so uma sub-avaliao dos valores da soluo
exata. Heun e RK4 ainda subestimam os valores mas menos gritantemente. Uma
possibilidade interessante est em voc modificar o programa para que ele gere o valor
da soluo exata de forma compar-la visualmente com as solues aproximadas.
Modifique agora o valor de h para 1 / 4 e voc notar que haver uma discrepncia menor
entre Heun e RK4. Diminua h para, por exemplo, 1 / 10 e voc notar que visualmente
haver uma discrepncia bem pequena entre os mtodos de Heun e RK4. Lembremos
que voc no pode chegar a concluso que assim est bom. O olhmetro um pssimo
instrumento de medida.

dy
II) = y sen( x) ; y (0)=1
dx

Este um problema ligeiramente mais complexo que o anterior e a soluo


1cos x
analtica y ( x)=e . O valor de h inicialmente ser 1 / 4 e o valor final para x ser
12 para facilitar a observao das oscilaes que caracterizam a soluo desta equao
diferencial. Novamente usando o comando do gnuplot

gnuplot> plot ehr.dat u 1:2 w l, ehr.dat u 1:3 w l,ehr.dat u 1:4 w l

voc ver mais informaes que no exemplo anterior no qual a funo era
monotonamente crescente. Algo em comum com o exemplo posterior ser percebido: o
pior desempenho do mtodo de Euler frente aos outros mtodos. No entanto, voc poder
observar que quando o comportamento da soluo estiver numa regio de crescimento ou
decrescimento mais contnuo, o comportamento da inclinao das curvas ser bem
prximas, mesmo que os valores sejam diferentes. Algo mais sutil est acontecendo.
Observe que quando a soluo muda o sinal da derivada, o mtodo de Euler, por assim
dizer, demora um pouco a perceber esta mudana, ou seja, ele custa um pouco a
perceber a mudana.
fcil de compreender o porque disto. O mtodo de Euler de ordem 1, ou seja,
ele equivalente srie de Taylor com apenas o primeiro termo que a derivada de y.
Assim, Euler sensvel s variaes de y mas no derivada segunda de y que carrega
a informao da troca de sinal da derivada; em outras palavras, a concavidade da curva.
Os mtodos de Heun e RK4 j so ambos sensveis derivada segunda e por isto que
eles descrevem melhor as mudanas no sinal da derivada.
Experimente diminuir um pouco mais o valor de h e observe as diferenas.

dy
III) =10 y ; y (0)=1
dx
10 x
Aqui temos mais um exemplo simples e de soluo analtica y ( x)=e . fcil
de perceber que a soluo cai rapidamente para zero. Comecemos por usar h = 1 / 2 e
resolvamos numericamente at x = 1,5. Usando o comando

gnuplot> plot ehr.dat u 1:2 w l, ehr.dat u 1:3 w l,ehr.dat u 1:4 w l

Talvez seja necessrio uma mudana nas escalas da figura para que voc observe todos
os detalhes da mesma.
Voc notar que os mtodos daro resultados com comportamentos
completamente diferentes da soluo analtica. Euler d uma funo peridica constituda
por uma poligonal, Heun d um valor constante enquanto RK4 d valores que descem
negativamente. O motivo disto sutil mas que j foi apresentado no material didtico: o
valor dado para h faz com que os termos truncados pela srie de Taylor tenham uma
contribuio maior que o prprio mtodo! Ou, em outras palavras, as frmulas no
funcionam mais como mtodos numricos para resoluo de equaes diferenciais
ordinrias. Diminuindo h para 0,4 e depois para 0,3 e suscetivamente at 0,1 veremos os
resultados aos poucos se comportar como esperado. Isto , portanto, um alerta que
demonstra que a escolha de h no arbitrria. Lembrem-se que pelo que vimos na teoria
diminuir h arbitrariamente tambm no soluo.

dy
IV) =25 y ; y (0)=1
dx

1 5 x
Este caso tem como soluo analtica y ( x)= ( 2+ 3e ) . Os valores usados
5
para h so semelhantes aos usados no caso anterior, havendo modificao apenas no
valor final de x que vai para 3. O interessante que apesar das solues serem bem
diferentes, para valores maiores de h os comportamentos so muito parecidos
demonstrando que as frmulas efetivamente no funcionam como mtodos de resoluo
de equaes diferenciais para estes valores de h.

Observaes sobre o valor de h

No desenvolvimento terico vimos que no podemos diminuir indefinidamente o


valor de h. H uma relao de compromisso entre a diminuio de h e o valor mnimo
representvel na mquina utilizada para os clculos. Assim, para contrabalanar as
questes observadas os exemplos anteriores, vamos discutir aqui o efeito numrico de
usarmos valores 'pequenos' para h. Aqui no levaremos em considerao a questo
relativa eficincia pois claramente quanto menor for h, maior ser o tempo de
processamento. Abaixo vai a sada de um programa que calcula a derivada de sen(x)
usando a definio da derivada usada matemtica, ou seja,

dy y ( x+ h) y ( x)
=lim h .
dx h

No entanto, usaremos esta expresso no no sentido matemtico por dois motivos: i) ns


no trabalhamos aqui com infinitesimais; ii) num computador/calculadora existe um
nmero mnimo representvel abaixo do qual o valor representado zero. Estes dois
fatores mostram que a noo de limite no aplicvel num computador. Assim, usaremos
a definio da derivada como uma forma de aproximar a derivada matemtica usando um
valor de h no infinitesimal. Como veremos na segunda parte da matria, o uso da
definio desta maneira nos dar uma aproximao de primeira ordem em h. Existem
outras aproximaes mais precisas e apresento uma aproximao de segunda ordem em
h logo abaixo:

dy y (x+ h) y ( xh)
.
dx 2h

O programa derivada gera valores aproximados da derivada de trs tipos: usando a


frmula de primeira ordem com ponto flutuante de quatro baites, usando a frmula de
primeira ordem com ponto flutuante de oito baites e usando a frmula de segunda ordem
com ponto flutuante de quatro baites. O programa que gerar os pontos o derivada.c e
ele se encontra na pgina da disciplina e supomos que o arquivo gerado leva o nome de
derivada.dat.
Para a visualizao de todos os pontos ser necessrio gerar grficos di-log, ou
seja, de escala logartmica nos eixos x e y. No caso do gnuplot basta executar os
comandos

gnuplot> set logscale x


gnuplot> set logscale y

e gerar o grfico no seguinte modo

gnuplot> plot derivada.dat u 1:2 w l, derivada.dat u 1:3 w l, derivada.dat u 1:4 w l

o qual resultar num grfico com o seguinte aspecto:

Em vermelho temos a frmula de primeira ordem em h e quatro baites de ponto flutuante,


em azul a frmula de segunda ordem em h e quatro baites de ponto flutuante e a terceira
a frmula de primeira ordem em h e oito baites de ponto flutuante. Observe que todas as
frmulas do resultados piores quando vo abaixo de um determinado valor de h. O
nmero que a partir do qual isto ocorre varia com a ordem do mtodo e com o nmero de
baites que usamos para as variveis envolvidas.
Questes

I) Abaixo est apresentado um sistema constitudo de um pndulo cujo o fio de


suspenso uma mola de constante elstica k e tem comprimento l sem qualquer fora
aplicada. A massa na ponta do pndulo tem valor m.

As equaes so dadas por

[ ( )] [ ( )( ddt )]=mg sen


2 2
d r d d2 dr
m 2
r +k (rl)=mg cos e m r 2
+2
dt dt dt dt

onde o ngulo tomado a partir do ponto de repouso, r o comprimento da mola


e g a acelerao da gravidade.

Simule tempo suficiente para que haja pelo menos quatro oscilaes em torno do
ponto de equilbrio. Use os seguintes valores para a massa e constante de mola:

a)m=1 ;k=1
b)m=4 ; k=1
c )m=1 ; k=2

Faa comparaes entre os casos.


Monitore o sistema pela a energia que neste caso dada por

[( ) ( ) ]
2 2
m dr d k
T= + r2 ; V =mgr cos + ( rl)2 ; E=T +V .
2 dt dt 2

d dr
Use ainda as seguintes condies iniciais: (0)=1 ; | =0 ; e r (0)=1 ; | =0 ; .
dt t=0 dt t =0
Use g=1 ; l=1 .

Faa grficos da evoluo do ngulo e do comprimento do pndulo com o tempo. Faa


ainda os mapas de fase tanto da equao angular quanto a do comprimento do pndulo (
d dr
contra e r contra ). O que voc observa de interessante?
dt dt
Brincar um pouco com os parmetros pode ajudar...
Sugestes:
a) Comece a implementao como se o mtodo de resoluo fosse de segunda ordem na
discretizao. Simplifica identificar erros no incio e se implementa de forma incremental.
b) Comece por um sistema de apenas duas equaes que voc saiba a soluo. Verifique
em qualquer livro de equaes diferenciais. Faa uso tambm do exemplo do pndulo
simples que est implementado e apresentado na pgina do curso.

II) Usando calculadora, determine o valor de y no ponto x = 1. Use um mtodo de


segunda ordem de passo simples, um mtodo de previso-correo de passo dois e um
mtodo de previso-correo de passo 4 e Runge-Kutta-Nystrm de quarta ordem. Use
ainda h = 1; 0,5 e 0;25 para cada mtodo. Compare os resultados dentro do mesmo
mtodo e dos mtodos entre si.
2
d y dy dy
4 +4 +17 y =0 ; y (0)=1 ; | =2
dx 2
dx dx x=0

IV) Resolva com o uso da calculadora o problema abaixo usando Heun, previso-correo
de passo 2 e previso-correo de passo 4.

dy x+ y
= ; y (1)=0 ; y (1,5)=? ;(h=0,1 e 0,125)
dx x

Compare os resultados para os valores de h diferentes e os mtodos diferentes. Qual


concluso a qual voc chega? Sugestes: faa grficos dos mtodos sobrepostos para o
mesmo h e outros de cada mtodo com valores de h diferentes.

V) Resolva o problema abaixo com o uso de calculadora usando um mtodo de segunda


ordem.
2 4
d y dy dy
dx 2
+
dx ( ) + sen ( x )=0 ; y ( 0)=1 ; | =0 ; y (0,2)=? ; (h=0,05)
dx x=0

VI) Verifique a ordem do mtodo abaixo, assim como se ele consistente e estvel

h
y i+1= y i1 + ( f i +1+ 4 f i+ f i1 ) .
3

Ateno: Todos estes resultados podero ser verificados usando o


Scilab ou o Maxima!
DESAFIO

Os problemas associados vrios fenmenos difusivos (calor, como evolui uma espcie
invasora numa regio nova ou um boato pr-internet) podem ser descritos pela a equao
abaixo


= 2
t

onde aqui a difusibilidade do fenmeno descrito por que varia com o tempo t e

2 2 2
2 = + +
x2 y2 z2

chamado de laplaciano. No entanto, faremos uso do caso em uma dimenso


2

=
t x
2

que o suficiente para um bom estudo.


Veremos na segunda parte do curso que possvel descrever uma aproximao deste
problema com na equao abaixo

d j
=k 2 j12 j i1 ; k 2= 2
dt x

onde aqui o ndice j, que varia de 0 at n, indica a posio x j do espao onde calculamos o
valor de e x a discretizao espacial. Teremos um sistema de n-1 equaes
diferenciais ordinrias pois os valores de nos pontos x 0 e xn so conhecidos.
Resolva um caso especial do problema acima que ser constitudo por quatro
equaes dadas abaixo
d 1 2
=k 22 10
dt
d 2
=k 2 32 2 1
dt
d 3
=k 2 42 3 2
dt
d 4
=k 2 52 4 3
dt

onde para todo tempo vale 0 =0 ; 5=100 e para t = 0 vale


1=80 ; 2=60 ; 3=40 ; 4=20 . Temos ainda que os valores para a difusibilidade e a
discretizao espacial sero =1 ; x=1/5 e as coordenadas espaciais sero
x 0=0 ; x 1=0,2 ; x 2=0,4 ; x 3=0,6 ; x 4=0,8 ; x 5=1,0 .
Calcule a evoluo no tempo at que os valores nos pontos dados mostrem uma
tendncia francamente linear (se voc fizer um ajuste de uma reta por mnimos quadrados
o coeficiente angular ser aproximadamente 100). Use os mtodos de previso-correo
de segunda e quarta ordens sabendo que os valores para so limitados ao intervalo [0,
100]. Monitore os erros locais e faa os grficos sobrepostos da evoluo em cada ponto
espacial no tempo.

Você também pode gostar