Pular para o conteúdo
Omni

Métodos numéricos: Euler e Runge-Kutta

O que fazer quando não existe fórmula fechada — que é o caso quase sempre.

Ordem
Tipo
linear e não linear
Métodos
numerico
Aplicações
computação científica

Antes distoExistência e unicidade

O tópico de equações exatas terminou com uma constatação desconfortável: quase nenhuma equação diferencial tem solução em forma fechada. O teorema de existência e unicidade, por sua vez, garante que a solução existe — ela está lá, é única, apenas não se deixa escrever.

Métodos numéricos são a resposta a essa situação. Eles nunca produzem uma fórmula; produzem uma tabela de números, com erro controlado. É menos do que se gostaria e é o suficiente para quase toda aplicação.

O problema, posto com precisão

Dado o problema de valor inicial

dydx=f(x,y),y(x0)=y0,\frac{dy}{dx} = f(x,y), \qquad y(x_0) = y_0,

queremos valores aproximados de yy nos pontos

xn=x0+nh,n=1,2,3,x_n = x_0 + n\,h, \qquad n = 1, 2, 3, \ldots

O número hh é o passo. Chamaremos yny_n a aproximação calculada e y(xn)y(x_n) o valor exato — que não conhecemos, e cuja distância a yny_n é justamente o que se quer estimar.

O método de Euler

A ideia é a coisa mais direta que se pode fazer com um campo de direções: em cada ponto o campo diz para onde ir, então vá — em linha reta, por um instante curto, e pergunte de novo.

Passe o cursor para ver a solução por um ponto; clique para fixá-la.Toque no gráfico para fixar a solução que passa pelo ponto.

Quanto erro, exatamente

Há dois erros diferentes, e confundi-los é a fonte de mal-entendidos.

Demonstração— ordem do método de Euler

Erro local. Pelo teorema de Taylor com resto de Lagrange, existe ξ\xi entre xnx_n e xn+1x_{n+1} com

y(xn+1)=y(xn)+hy(xn)+h22y(ξ).y(x_{n+1}) = y(x_n) + h\,y'(x_n) + \frac{h^2}{2}\,y''(\xi).

Como y(xn)=f(xn,y(xn))y'(x_n) = f(x_n, y(x_n)), os dois primeiros termos são exatamente o passo de Euler a partir do valor exato. Logo

εn+1=h22y(ξ),\varepsilon_{n+1} = \frac{h^2}{2}\,y''(\xi),

que é O(h2)O(h^2) desde que yy'' seja limitada no intervalo.

Erro global. Para chegar a xˉ\bar{x} são precisos N=(xˉx0)/hN = (\bar{x}-x_0)/h passos, isto é, NN é proporcional a 1/h1/h. Somando NN erros locais de tamanho O(h2)O(h^2):

NO(h2)=xˉx0hO(h2)=O(h).N \cdot O(h^2) = \frac{\bar{x}-x_0}{h}\cdot O(h^2) = O(h).

Fim da demonstração.

Como melhorar: duas estratégias

Se o erro vem de truncar Taylor cedo demais, há duas saídas.

Estratégia 1: mais termos de Taylor. Derivando y=f(x,y)y' = f(x,y) pela regra da cadeia,

y=fx+fyy=fx+ffy,y'' = f_x + f_y\,y' = f_x + f\,f_y,

o que dá o método de Taylor de três termos:

yn+1=yn+hf+h22(fx+ffy).y_{n+1} = y_n + h\,f + \frac{h^2}{2}\bigl(f_x + f\,f_y\bigr).

É de ordem 2. E é pouco usado, por uma razão de engenharia: exige as derivadas parciais de ff, calculadas à mão para cada problema novo. Um programa de uso geral receberia ff como caixa-preta e não teria como derivá-la.

Estratégia 2: mais avaliações de ff. Em vez de derivadas, use o próprio ff em vários pontos e combine os valores. Esta é a família Runge-Kutta, e é a que venceu.

Euler melhorado

Runge-Kutta de quarta ordem

O experimento

Ordem é uma afirmação verificável. Tomemos o problema mais transparente possível,

y=y,y(0)=1,y' = y, \qquad y(0) = 1,

cuja solução em x=1x = 1 vale e=2,718281828e = 2{,}718281828\ldots, e integremos até lá com os três métodos, dividindo hh pela metade a cada linha.

hherro Eulerrazãoerro Heunrazãoerro RK4razão
0,10{,}11,24×1011{,}24\times10^{-1}4,20×1034{,}20\times10^{-3}2,08×1062{,}08\times10^{-6}
0,050{,}056,50×1026{,}50\times10^{-2}1,921{,}921,09×1031{,}09\times10^{-3}3,853{,}851,36×1071{,}36\times10^{-7}15,415{,}4
0,0250{,}0253,32×1023{,}32\times10^{-2}1,961{,}962,78×1042{,}78\times10^{-4}3,933{,}938,67×1098{,}67\times10^{-9}15,715{,}7
0,01250{,}01251,68×1021{,}68\times10^{-2}1,981{,}987,01×1057{,}01\times10^{-5}3,963{,}965,47×10105{,}47\times10^{-10}15,815{,}8

Na prática

O livro dedica uma seção inteira à pergunta “e agora, o que eu uso?” (Braun (1993), §1.17, p. 118). Três pontos merecem registro.

Passo pequeno demais também é ruim. A análise acima trata só do erro de truncamento, que decresce com hh. Mas cada operação em ponto flutuante carrega um erro de arredondamento, e o número de operações cresce como 1/h1/h. Abaixo de certo hh o arredondamento domina e o erro total volta a crescer. Existe um hh ótimo, e ele não é o menor possível.

Passo adaptativo. Em vez de fixar hh, estima-se o erro em tempo de execução: dá-se um passo de tamanho hh e dois de tamanho h/2h/2, e compara-se. Se a diferença exceder a tolerância, reduz-se hh; se for muito menor, aumenta-se. É assim que funcionam os integradores de biblioteca, e é o que permite atravessar uma região suave depressa e desacelerar numa região difícil.

Onde tudo falha. Nenhum método numérico detecta sozinho que a solução deixou de existir. Em y=y2y' = y^2 com y(0)=1y(0) = 1, a solução explode em x=1x = 1, e um integrador ingênuo produzirá números cada vez maiores sem avisar que passaram a não significar nada. O campo de direções desta plataforma trata o caso do jeito mínimo — interrompe o traçado ao encontrar valor não finito —, o que resolve o problema de travar a aba, e não o de saber onde a solução acaba.

Exercícios

O segundo exercício é o mais instrutivo: ele prevê, com papel e lápis, exatamente os números da tabela acima.

  1. básicoEuler e Heun à mãono espírito de Braun §1.13 e §1.15

    Considere y=x2yy' = x^2 - y com y(0)=1y(0) = 1.

    (a) Dê dois passos de Euler com h=0,2h = 0{,}2.

    (b) Dê um passo de Euler melhorado com h=0,2h = 0{,}2.

    (c) A solução exata é y=x22x+2exp(x)y = x^2 - 2x + 2 - \exp(-x). Compare os erros em x=0,2x = 0{,}2 e comente o custo de cada método.

    Dica

    Em (b), calcule primeiro o passo de Euler como previsão, depois avalie ff no ponto previsto.

    Resolução

    (a) Euler.

    y1=1+0,2(01)=0,8,y_1 = 1 + 0{,}2\,(0 - 1) = 0{,}8,y2=0,8+0,2(0,040,8)=0,80,152=0,648.y_2 = 0{,}8 + 0{,}2\,(0{,}04 - 0{,}8) = 0{,}8 - 0{,}152 = 0{,}648.

    (b) Euler melhorado.

    k1=f(0,1)=1,previsa˜o=1+0,2(1)=0,8,k_1 = f(0, 1) = -1, \qquad \text{previsão} = 1 + 0{,}2(-1) = 0{,}8,k2=f(0,2, 0,8)=0,040,8=0,76,k_2 = f(0{,}2,\ 0{,}8) = 0{,}04 - 0{,}8 = -0{,}76,y1=1+0,22(10,76)=10,176=0,824.y_1 = 1 + \frac{0{,}2}{2}\,(-1 - 0{,}76) = 1 - 0{,}176 = 0{,}824.

    (c) Comparação em x=0,2x = 0{,}2. O valor exato é

    y(0,2)=0,040,4+2exp(0,2)=1,640,818731=0,821269.y(0{,}2) = 0{,}04 - 0{,}4 + 2 - \exp(-0{,}2) = 1{,}64 - 0{,}818731 = 0{,}821269.
    Métodovalorerroavaliações de ff
    Euler0,8000000{,}8000002,13×1022{,}13\times10^{-2}11
    Heun0,8240000{,}8240002,73×1032{,}73\times10^{-3}22

    Comentário. Dobrar o trabalho reduziu o erro por um fator de quase 88. Compare com o que aconteceria dobrando o trabalho em Euler, isto é, usando h=0,1h = 0{,}1 em dois passos: o erro cairia por um fator de 22, não de 88.

    O ganho de Heun não vem de mais passos; vem de usar melhor a informação de cada passo. É essa a ideia que Runge-Kutta leva ao limite prático.

  2. intermediárioprever o erro de Eulerno espírito de Braun §1.13

    Aplique o método de Euler a y=yy' = y, y(0)=1y(0) = 1, com passo h=1/Nh = 1/N.

    (a) Mostre que yN=(1+h)1/hy_N = (1 + h)^{1/h}.

    (b) Mostre que o erro global em x=1x = 1 satisfaz

    eyN=e2h+O(h2).e - y_N = \frac{e}{2}\,h + O(h^2).

    (c) Confronte a previsão com a coluna de Euler da tabela do texto.

    Dica

    Em (b), calcule lnyN=1hln(1+h)\ln y_N = \frac{1}{h}\ln(1+h) e use a série do logaritmo.

    Resolução

    (a) Com f(x,y)=yf(x,y) = y, o passo é yn+1=yn+hyn=(1+h)yny_{n+1} = y_n + h y_n = (1+h)y_n. Por indução, yn=(1+h)ny_n = (1+h)^n, e em n=N=1/hn = N = 1/h:

    yN=(1+h)1/h.y_N = (1+h)^{1/h}.

    (b) Tomando logaritmo e usando ln(1+h)=hh22+h33\ln(1+h) = h - \frac{h^2}{2} + \frac{h^3}{3} - \cdots:

    lnyN=1hln(1+h)=1h2+h23\ln y_N = \frac{1}{h}\ln(1+h) = 1 - \frac{h}{2} + \frac{h^2}{3} - \cdots

    Exponenciando e expandindo a exponencial,

    yN=eexp ⁣(h2+O(h2))=e(1h2+O(h2)).y_N = e\,\exp\!\left(-\frac{h}{2} + O(h^2)\right) = e\left(1 - \frac{h}{2} + O(h^2)\right).

    Logo

    eyN=e2h+O(h2)1,359h.e - y_N = \frac{e}{2}h + O(h^2) \approx 1{,}359\,h.

    (c) Confrontando:

    hhprevisão 1,359h1{,}359herro medido
    0,10{,}10,13590{,}13590,12450{,}1245
    0,050{,}050,06800{,}06800,06500{,}0650
    0,0250{,}0250,03400{,}03400,03320{,}0332
    0,01250{,}01250,01700{,}01700,01680{,}0168

    A previsão erra por 9%9\% na primeira linha e por 1%1\% na última — que é exatamente o comportamento esperado de um termo O(h2)O(h^2) desprezado.

    O que este exercício estabelece. O teorema dizia O(h)O(h); aqui obteve-se a constante, e/2e/2. E ela explica por que as razões da tabela se aproximam de 22 por baixo: o termo O(h2)O(h^2) tem sinal tal que reduz o erro, e sua influência relativa diminui à medida que hh encolhe.

  3. avançadoordem dos métodosno espírito de Braun §1.15 e §1.16

    (a) Mostre, expandindo em série de Taylor em duas variáveis, que o erro local do método de Euler melhorado é O(h3)O(h^3) — e portanto o erro global é O(h2)O(h^2).

    (b) Mostre que, quando ff não depende de yy, o passo de Runge-Kutta de quarta ordem coincide com a regra de Simpson aplicada a xnxn+hf(x)dx\int_{x_n}^{x_n+h} f(x)\,dx.

    (c) Use (b) para explicar por que RK4 é exato para y=f(x)y' = f(x) com ff polinômio de grau até 33.

    Dica

    Em (a), a expansão que você precisa é f(x+h,y+hk)=f+hfx+hkfy+O(h2)f(x+h, y+hk) = f + h f_x + hk f_y + O(h^2), com as derivadas avaliadas em (xn,yn)(x_n, y_n).

    Resolução

    (a) Escreva ff, fxf_x, fyf_y avaliados em (xn,yn)(x_n, y_n), e y=y(xn)y = y(x_n).

    O valor exato. Por Taylor, com y=fy' = f e y=fx+ffyy'' = f_x + f f_y:

    y(xn+h)=y+hf+h22(fx+ffy)+O(h3).y(x_n + h) = y + h\,f + \frac{h^2}{2}\bigl(f_x + f\,f_y\bigr) + O(h^3).

    O passo de Heun. Expandindo k2k_2 em duas variáveis,

    k2=f(xn+h, y+hf)=f+hfx+hffy+O(h2).k_2 = f(x_n + h,\ y + h f) = f + h\,f_x + h f\,f_y + O(h^2).

    Portanto

    yn+1=y+h2(k1+k2)=y+h2(2f+hfx+hffy+O(h2))y_{n+1} = y + \frac{h}{2}\bigl(k_1 + k_2\bigr) = y + \frac{h}{2}\Bigl(2f + h f_x + h f f_y + O(h^2)\Bigr)=y+hf+h22(fx+ffy)+O(h3).= y + h f + \frac{h^2}{2}\bigl(f_x + f f_y\bigr) + O(h^3).

    Comparando. Os dois coincidem até o termo em h2h^2, inclusive. A diferença é O(h3)O(h^3): erro local de ordem 33.

    Erro global. Pelo mesmo argumento de contagem do texto, N1/hN \sim 1/h passos com erro local O(h3)O(h^3) dão erro global O(h2)O(h^2).

    (b) Se f=f(x)f = f(x), as avaliações não dependem do segundo argumento:

    k1=f(xn),k2=k3=f ⁣(xn+h2),k4=f(xn+h).k_1 = f(x_n), \quad k_2 = k_3 = f\!\left(x_n + \tfrac{h}{2}\right), \quad k_4 = f(x_n + h).

    Substituindo na combinação:

    yn+1=yn+h6[f(xn)+4f ⁣(xn+h2)+f(xn+h)],y_{n+1} = y_n + \frac{h}{6}\left[f(x_n) + 4f\!\left(x_n + \tfrac{h}{2}\right) + f(x_n+h)\right],

    porque 2k2+2k3=4f(xn+h/2)2k_2 + 2k_3 = 4f(x_n + h/2). O colchete com pesos 1,4,11, 4, 1 sobre h/6h/6 é precisamente a regra de Simpson em [xn,xn+h][x_n, x_n + h].

    (c) A regra de Simpson é exata para polinômios de grau até 33 — ela é construída para ser exata até grau 22, e ganha o grau 33 de graça por simetria do erro em torno do ponto médio.

    Como para y=f(x)y' = f(x) o método é Simpson, ele integra sem erro algum qualquer ff polinomial de grau até 33: o resultado numérico coincide com f\int f até o arredondamento da máquina.

    A leitura correta disso. Não significa que RK4 seja exato para EDOs de grau baixo em geral — a dependência em yy estraga o argumento. Significa que a ordem 44 do método tem uma raiz identificável: ele carrega dentro de si uma regra de quadratura de ordem 44, e as duas avaliações no ponto médio existem para alimentar o peso 44 de Simpson.

O progresso fica salvo neste navegador, e só muda quando você aperta.

Fontes deste tópico

  1. Martin Braun. Differential Equations and Their Applications: An Introduction to Applied Mathematics, 4ª ed. Springer-Verlag, 1993.

    §1.13, §1.14, §1.15, §1.16, §1.17 · p. 96-120 (PDF: p. 112–136)

    Euler, análise de erro, série de Taylor de três termos, Euler melhorado e Runge-Kutta. §1.17 ("What to do in practice") discute a escolha do método.

    fontes/EDO/Differential Equations and The - Braun, Martin_7579.pdf

Plataforma de estudo de matemática e suas aplicações. As fontes de cada tópico ficam listadas ao fim da respectiva página.