Método de Runge-Kutta
Origem: Wikipédia, a enciclopédia livre.
Em análise numérica, os métodos de Runge–Kutta formam uma família importante de metódos iterativos implícitos e explícitos para a resolução numérica (aproximação) de soluções de equações diferenciais ordinárias. Estas técnicas foram desenvolvidas por volta de 1900 pelos matemáticos C. Runge e M.W. Kutta
Veja o artigo sobre equações diferenciais ordinárias numéricas para maior entendimento e para outros métodos. Veja ainda a lista de métodos Runge-Kutta.
Trata-se de um método por etapas que tem a seguinte expressão genérica:
,
onde
i = 1,...,e
com aij,bi,ci constantes próprias do esquema numérico. Os esquemas Runge-Kutta podem ser explícitos ou implícitos dependendo das constantes aij do esquema. Se esta matriz é triangular inferior com todos os elementos da diagonal principal iguais a zero; quer dizer, aij = 0 para j = i,...,e, os esquemas são explícitos.
O método de runge-kutta é muitas vezes confundido com o metodo "predictor-corrector"sendo este o resultado da junção do método dos trapézios e do método de Euler.
Índice |
[editar] O método Runge–Kutta clássico de quarta ordem
Um membro da família de métodos Runge–Kutta é usado com tanta frequência que costuma receber o nome de "RK4" ou simplesmente "o método Runge–Kutta".
Seja um problema de valor inicial (PVI) especificado como segue:
Então o método RK4 para este problema é dado pelas seguintes equações:
onde yn + 1 é a aproximação por RK4 de y(tn + 1), e
Então, o próximo valor (yn+1) é determinado pelo valor atual (yn) somado com o produto do tamanho do intervalo (h) e uma inclinação estimada. A inclinação é uma média ponderada de inclinações:
- k1 é a inclinação no início do intervalo;
- k2 é a inclinação no ponto médio do intervalo, usando a inclinação k1 para determinar o valor de y no ponto tn + h/2 através do método de Euler;
- k3 é novamente a inclinação no ponto médio do intervalo, mas agora usando a inclinação k2 para determinar o valor de y;
- k4 é a inclinação no final do intervalo, com seu valor y determinado usando k3.
Ao fazer a média das quatro inclinações, um peso maior é dado para as inclinações no ponto médio:
O método RK4 é um método de quarta ordem, significando que o erro por passo é da ordem de h5, enquanto o erro total acumulado tem ordem h4.
Note que as fórmulas acima são válidas tanto para funções escalares quanto para funções vetoriais (ou seja, quando y pode ser um vetor e f um operador). Por exemplo, pode-se integrar a equação de Schrödinger usando o operador Hamiltoniano como função f.
[editar] Métodos Runge–Kutta explícitos
A família de métodos Runge–Kutta explícitos é uma generalização do método RK4 mencionado acima.
Ela é dada por
onde
-
-
- (Nota: as equações acima têm definições diferentes em diferentes textos, apesar de equivalentes).
Para especificar um método em particular, é necessário fornecer o inteiro s (número de estágios), e os coeficiêntes aij (para 1 ≤ j < i ≤ s), bi (para i = 1, 2, ..., s) e ci (para i = 2, 3, ..., s). Esses dados são geralmente dispostos de forma mnemônica, conhecida como matriz de Butcher (de John C. Butcher):
0 | ||||||
c2 | a21 | |||||
c3 | a31 | a32 | ||||
cs | as1 | as2 | as,s − 1 | |||
b1 | b2 | bs − 1 | bs |
O método Runge–Kutta é consistente se
Existem ainda exigências extras se for imposto que o método tenha certa ordem p, significando que o erro de truncamento é O(hp+1). Tais condições podem ser deduzida da própria definição de erro de truncamento. Por exemplo, um método de 2 estágios tem ordem 2 se b1 + b2 = 1, b2c2 = 1/2, e b2a21 = 1/2.
[editar] Exemplos
O método RK4 se enquadra nesta categoria. Seu tableau é:
0 | |||||
1/2 | 1/2 | ||||
1/2 | 0 | 1/2 | |||
1 | 0 | 0 | 1 | ||
1/6 | 1/3 | 1/3 | 1/6 |
No entanto, o método Runge–Kutta mais simples é o (forward) Euler, dado pela fórmula yn + 1 = yn + hf(tn,yn). Este é o único método Runge–Kutta explícito de um estágio que é consistente. A tableau correspondente é:
0 | ||
1 |
Um exemplo de um método de segunda ordem com dois estágios é o método do ponto médio (midpoint method, em inglês)
A tableau correspondente é:
0 | |||
1/2 | 1/2 | ||
0 | 1 |
Note que este método do 'ponto médio' não é o método RK2 ótimo. Uma alternativa é fornecida pelo método de Heun, onde os 1/2's da tableau acima são simplesmente substituídos por 1's. Caso se queira minimizar o erro de truncamento, o método abaixo deve ser utilizado (Atkinson p. 423). Outros métodos importantes são Fehlberg, Cash-Karp e Dormand-Prince. Leia ainda, o artigo sobre tamanho de passo Adaptativo.
[editar] Uso
O que segue é um exemplo de uso de um método Runge–Kutta explícito de dois estágios:
0 | |||
2/3 | 2/3 | ||
1/4 | 3/4 |
para resolver o problema de valor inicial
com tamanho de passo h=0.025.
A tableau acima gera as seguintes equações equivalentes que definem o método:
t0 = 1 | |||
y0 = 1 | |||
t1 = 1.025 | |||
k1 = y0 = 1 | f(t0,k1) = 2.557407725 | k2 = y0 + 2 / 3hf(t0,k1) = 1.042623462 | |
y1 = y0 + h(1 / 4 * f(t0,k1) + 3 / 4 * f(t0 + 2 / 3h,k2)) = 1.066869388 | |||
t2 = 1.05 | |||
k1 = y1 = 1.066869388 | f(t1,k1) = 2.813524695 | k2 = y1 + 2 / 3hf(t1,k1) = 1.113761467 | |
y2 = y1 + h(1 / 4 * f(t1,k1) + 3 / 4 * f(t1 + 2 / 3h,k2)) = 1.141332181 | |||
t3 = 1.075 | |||
k1 = y2 = 1.141332181 | f(t2,k1) = 3.183536647 | k2 = y2 + 2 / 3hf(t2,k1) = 1.194391125 | |
y3 = y2 + h(1 / 4 * f(t2,k1) + 3 / 4 * f(t2 + 2 / 3h,k2)) = 1.227417567 | |||
t4 = 1.1 | |||
k1 = y3 = 1.227417567 | f(t3,k1) = 3.796866512 | k2 = y3 + 2 / 3hf(t3,k1) = 1.290698676 | |
y4 = y3 + h(1 / 4 * f(t3,k1) + 3 / 4 * f(t3 + 2 / 3h,k2)) = 1.335079087 |
As soluções numéricas correspondem aos valores sublinhados. Note que f(ti,k1) foi calculado evitando refazer os cálculos em yis.
[editar] Ligações externas
[editar] Referências
- J. C. Butcher, Numerical methods for ordinary differential equations, ISBN 0471967580
- George E. Forsythe, Michael A. Malcolm, and Cleve B. Moler. Computer Methods for Mathematical Computations. Englewood Cliffs, NJ: Prentice-Hall, 1977. (See Chapter 6.)
- Ernst Hairer, Syvert Paul Nørsett, and Gerhard Wanner. Solving ordinary differential equations I: Nonstiff problems, second edition. Berlin: Springer Verlag, 1993. ISBN 3-540-56670-8.
- William H. Press, Brian P. Flannery, Saul A. Teukolsky, William T. Vetterling. Numerical Recipes in C. Cambridge, UK: Cambridge University Press, 1988. (See Sections 16.1 and 16.2.)
- Runge-Kutta 4th-order method textbook notes, PPT, Matlab Mathematica Maple Mathcad at Holistic Numerical Methods Institute
- Kendall E. Atkinson. An Introduction to Numerical Analysis. John Wiley & Sons - 1989
- F. Cellier, E. Kofman. Continuous System Simulation. Springer Verlag, 2006. ISBN 0-387-26102-8.