ebooksgratis.com

See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Método de Runge-Kutta - Wikipédia, a enciclopédia livre

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:

u^{n+1} = u^n + \Delta t \sum_{i=1}^e b_ik_i,

onde

k_i=F(u^n + \Delta t \sum_{j=i}^e a_{ij}k_j ; t_n + c_i\Delta t) 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.


  Este artigo é um esboço sobre Matemática. Pode ajudar a Wikipédia expandindo-o.



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:

 y' = f(t, y), \quad y(t_0) = y_0.

Então o método RK4 para este problema é dado pelas seguintes equações:

\begin{align}
y_{n+1} &= y_n + {h \over 6} \left(k_1 + 2k_2 + 2k_3 + k_4 \right) \\
t_{n+1} &= t_n + h \\
\end{align}

onde yn + 1 é a aproximação por RK4 de y(tn + 1), e

\begin{align} 
k_1 &= f \left( t_n, y_n \right) \\
k_2 &= f \left( t_n + {h \over 2}, y_n + {h \over 2} k_1\right) \\
k_3 &= f \left( t_n + {h \over 2}, y_n + {h \over 2} k_2\right) \\
k_4 &= f \left( t_n + h, y_n + h k_3 \right) \\
\end{align}

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:

\mbox{inclinacao} = \frac{k_1 + 2k_2 + 2k_3 + k_4}{6}.

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

 y_{n+1} = y_n + h\sum_{i=1}^s b_i k_i,

onde

 k_1 = f(t_n, y_n), \,
 k_2 = f(t_n+c_2h, y_n+a_{21}hk_1), \,
 k_3 = f(t_n+c_3h, y_n+a_{31}hk_1+a_{32}hk_2), \,
 \vdots
 k_s = f(t_n+c_sh, y_n+a_{s1}hk_1+a_{s2}hk_2+\cdots+a_{s,s-1}hk_{s-1}).
(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 < is), 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
 \vdots  \vdots  \ddots
cs as1 as2  \cdots as,s − 1
b1 b2  \cdots bs − 1 bs

O método Runge–Kutta é consistente se

\sum_{j=1}^{i-1} a_{ij} = c_i\ \mathrm{for}\ i=2, \ldots, s.

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)

 y_{n+1} = y_n + hf\left(t_n+\frac{h}{2},y_n+\frac{h}{2}f(t_n, y_n)\right).

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

 y' = (\tan{y})+1,\quad y(1)=1,\ t\in [1, 1.1]

com tamanho de passo h=0.025.

A tableau acima gera as seguintes equações equivalentes que definem o método:

 k_1 = y_n \,
 k_2 = y_n + 2/3hf(t_n, k_1) \,
 y_{n+1} = y_n + h(1/4f(t_n,k_1)+3/4f(t_n+2/3h,k_2))\,
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


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -