Método de shooting na prática
Consideraçãoes numéricas sobre o método de shooting
Vamos lá?
Na aula anterior exploramos a equivalência entre PVC e PVI's. Nesta aula vamos ver como o método de shooting se comporta em problemas concretos e algumas dificuldades que podem surgir.
- 1
- 2
O método de shooting...
Nesta aula vamos nos concentrar no método de shooting aplicado aa PVC linear
Vimos na aula passada que a solução deste PVC é
PVI's no formato padrão
Para aplicar métodos numéricos na resolução dos PVI's
Em uma aula anterior, vimos como converter um PVI de segunda ordem em um sistema de equações diferenciais ordinárias de primeira ordem com condições iniciais. O PVI
Exemplo trabalhado
Para efeito de exemplo, considere o PVC
No Octave, a resolução numérica do PVC pelo método de shooting pode ser implementada com utilizando o comando lsode
, para a resolução dos PVI's (veja nesta aula como).
a = 0; b = 2; # Intervalo [a,b] alpha = 1; beta = 4; # Valores de contorno para y x = linspace(a,b,41)'; # Discretização de [a,b] em 41 pontos Fu = @(U,x) [U(2); U(1)/4 + 2*x]; # Definição do PVI para u U0 = [alpha;0]; # Condição inicial para u Fv = @(V,x) [V(2); V(1)/4]; # Definição do PVI para v V0 = [0;1]; # Condição inicial para v # Resolução numérica dos dois PVI's U = lsode(Fu, U0, x); V = lsode(Fv, V0, x); s = (beta - U(end,1)) / V(end,1); # Determinação de s y = U(:,1) + s * V(:,1); # Solução do PVC plot(x,U(:,1),x,V(:,1),x,y) # Gráfico das soluções dos PVI's e do PVC legend("u","v","y")
A figura abaixo exibe os gráficos das aproximações obtidas para as funções
A solução exata deste PVC é
# Solução exata do PVC em termos de b, extremo direito do intervalo yexato = @(x,b) exp(x/2) + (4+8*b-exp(b/2))/sinh(b/2) * sinh(x/2) - 8*x; norm(y-yexato(x,b),inf) ans = 8.3262e-08
Observe que o erro máximo, computado através da norma infinito da diferença entre a aproximação numérica e o valor exato, ficou um pouco abaixo de lsode
trabalha com tolerâncias da ordem de
Suponha agora que o extremo direito do intervalo para PVC
Para simular este caso, rode novamente o primeiro bloco de código, alterando apenas o valor de
Observe que o valor de
De modo geral, se
Este fenômeno de perda de acurácia próximo do extremo direito do intervalo de integração pode ser observado no PVC
Existem alternativas que tentam mitigar essas dificuldades do método de shooting como, por exemplo, repartir o intervalo de integração
Referências
Hebert B. Keller. Numerical Methods for Two-Point Boundary-Value Problems. Dover, 1992.
1. A partir do bloco de código exibido no texto, crie uma função para o Octave que implemente o método de shooting para um PVI linear, com condições de contorno de Dirichlet. Se precisar, consulte esta aula sobre funções no Octave. Sua função deve ter a seguinte estrutura:
shooting.m
function [x,y,u,v,s] = shooting(p,q,r,a,b,alpha,beta,n=21) # Método de shooting para aproximar a solução do PVC # -y''+ p(x)y' + q(x)y = r(x), a < x < b # # y(a) = alpha # y(b) = beta # # Esta função retorna: # x - vetor regularmente amostrado em [a,b] com n amostras # y - aproximação para a solução do PVC em x # u e v - aproximações para as soluções dos PVI's relacionados # s - escalar tal que y = u + s v ... endfunction
2. Resolva numericamente os PVI's associados a cada PVC método de shooting e observe o comportamento das funções
, , , , , , com e . com e