Você está na página 1de 7

GEVERTON F. SILVA; ISA M. D. SILVA ; LUIZ FELIPE D. SANTOS; RODRIGO R.

OLIVEIRA
PROFESSOR: ME. ENG MARCO ANTONIO V. SALES

MTODO DE RUNGE-KUTTA
DE QUARTA ORDEM

Mtodos Numricos
Engenharia de Controle e Automao

Pindamonhangaba SP
2014

MTODO DE RUNGE-KUTTA DE QUARTA ORDEM

1. SOLUES NUMRICAS DE EDOs


Mesmo que possamos demonstrar que existe uma soluo de uma equao diferencial,
podemos no ser capazes de mostr-la de forma explcita ou implcita. Em muitos casos, temos
que nos contentar com uma aproximao da soluo. Se existe uma soluo, ela representa
um conjunto de pontos no plano cartesiano. Neste trabalho, busca-se explorar a ideia de
utilizar uma equao diferencial para construir um algoritmo para a aproximao das
coordenadas y dos pontos da soluo real. (ZILL, 2013)
O objetivo deste trabalho apresentar o mtodo de Runge-Kutta de Quarta Ordem,
comparando suas vantagens e desvantagens com relao a outros mtodos, contextualizandoo com aplicaes prticas e incluindo uma aplicao computacional atravs do software Scilab
que demonstre seu algoritmo.
O mtodo de Runge-Kutta de quarta ordem provavelmente um dos mtodos mais populares
e tambm um dos mais precisos para se obter solues aproximadas de problemas de valor
inicial. (ZILL, 2013)

Definindo o termo Problema de Valor Inicial (PVI)


Condio inicial da EDO, em que a soluo da mesma passa pelo ponto definido. Exemplo de
proposta para um PVI:
Resolver a EDO = 0,2, com condio inicial y(1) = 1.

2. RUNGE-KUTTA
Os mtodos de Runge-Kutta so generalizaes da frmula bsica de Euller, em que a
inclinao da funo f substituda por uma mdia ponderada das inclinaes (ZILL, 2013).
Frmula de Euler:
+1 = + ( , )
O mtodo de Euler pode ser considerado um mtodo Runge-Kutta de primeira ordem.
Frmula dos mtodos de Runge-Kutta:
+1 = + (1 1 + 2 2 + + )

2.1. Runge-Kutta de Segunda Ordem


Consiste em encontrar constantes ou parmetros w1, w2, , de tal modo que a frmula
+1 = + (1 1 + 2 2 )
Onde:
1 = ( , )
2 = ( + , + 1 )
Sempre que as constantes satisfizerem a:
1 + 2 = 1, 2 =

1
2

2 =

1
2

Esse um sistema algbrico de trs equaes em quatro incgnitas e tem um nmero infinito
de solues:
1 = 1 2 , =

1
22

1
22

Em vista que o valor de w2 pode ser escolhido arbitrariamente, desde que seja diferente de
zero, h muitos mtodos de segunda ordem de Runge-Kutta possveis. Uma possibilidade
atribuir w2 = . Assim temos: w1 = , = 1, = 1
E consequentemente:

+1 = + (1 + 2 )
2

Os mtodos de terceira ordem no fazem parte do escopo deste trabalho e, portanto, sero
ignorados, a fim de chegar ao ponto principal de discusso nesta seo.

2.2. Runge-Kutta de Quarta Ordem


Consiste em encontrar constantes apropriadas de tal forma que a frmula:
+1 = + (1 1 + 2 2 + 3 3 + 4 4 )
Onde:
1 = ( , )
2 = ( + 1 , + 1 1 )
3 = ( + 2 , + 2 1 + 3 2 )

4 = ( + 3 , + 4 1 + 5 2 + 6 3 )
O conjunto de valores mais comumente usado para os parmetros d lugar ao seguinte
resultado:

+1 = + (1 + 22 + 23 + 4 )
6
1 = ( , )
1
1
2 = ( + , + 1 )
2
2
1
1
3 = ( + , + 2 )
2
2
4 = ( + , + 3 )

Enquanto outras frmulas de quarta ordem so facilmente obtidas, o algoritmo acima to


amplamente utilizado e reconhecido como uma valiosa ferramenta computacional que muitas
vezes referido como o mtodo de Runge-Kutta de quarta ordem ou o clssico mtodo de
Runge-Kutta. Quando utilizamos a sigla mtodo RK4, devemos pensar neste algoritmo.
aconselhvel observar com cuidado que, nas frmulas, k2 depende de k1, k3 depende de k2 e

k4 depende de k3. Alm disso, k2 e k3 envolvem aproximaes s inclinaes no ponto


1

mdio + 2 do intervalo definido por xn x xn+1.


No MatLab, o comando ode45 utiliza um mtodo de Runge-Kutta de quarta ordem para
calcular a soluo da equao diferencial. No entanto, o passo (h) varivel e recebe a
denominao de mtodo de Dormand-Prince. Para ajustar o passo, usa-se um mtodo de 5
ordem para avaliar o erro de integrao.

3. EXEMPLOS COM SOLUO IMPLEMENTADA NO SCILAB

3.1. Circuito em srie RL


Uma bateria de 12 volts conectada a um circuito em srie no qual a indutncia henry e a
resistncia 10 ohms. Determine a corrente i se a corrente inicial for 0.
Para um circuito em srie contendo apenas um resistor e um indutor, a segunda Lei de Kirchoff
estabelece que a soma das quedas de tenso no indutor (L(di/dt)) e no resistor (iR) igual
voltagem aplicada no circuito (E(t)). Obtemos assim a equao diferencial para a corrente i(t)
(ZILL, 2013):

+ = ()

Onde L e R so constantes conhecidas como a indutncia e a resistncia, respectivamente. A


corrente i(t) tambm chamada de resposta do sistema.
Dessa forma, para o problema proposto teremos:
1
+ 10 = 12
2

Isolando-se , tem-se:

= 2(12 10)

Esta equao diferencial ser solucionada no Scilab atravs do mtodo de Runge-Kutta de


quarta ordem.
Para ter um critrio de comparao e identificar visualmente o erro associado ao mtodo,
prope-se tambm a soluo analtica da equao diferencial, com plotagem de ambos os
grficos no programa implementado.
Resolvendo analiticamente, tem-se:
1
+ 10 = 12
2
Sujeita condio inicial i(0) = 0. Primeiramente, multiplicamos a equao diferencial por2 e,
usando o fator integrante 20 obtm-se:

[ 20 ] = 24 20

6
5
6
6 20
5 .
5

Integrando cada lado e resolvendo a equao, obtm-se () = + 20 . Como i(0) = 0,


6

temos que 0 = 5 + ou = 5. Assim a resposta () =


Programa implementado no Scilab:
// Programa para o calculo da E.D.O. de um CKT RL
// pelo metodo de Runge-Kutta de 4a ordem
// Condicao de contorno: y(0) = 0
// Solucao analitica: y(x) = 6/5 - 6/5 * exp(-20*x)
clear
clc
E = 12
L = 1/2
R = 10
x(1) = 0 // valor inicial
y(1) = 0 // condicao de contorno (Runge-Kutta de 4a ordem)
h = input("Incremento h: ")
xf = input("Valor final de x: ")
n = floor((xf - x(1)) / h + 1) // Numero de intervalos

for i = 1:n-1
x(i+1) = x(i) + h;
// Runge-Kutta de 4a ordem
k1 = (E - R * y(i))/L
k2 = (E - R * (y(i) + h*k1/2))/L
k3 = (E - R * (y(i) + h*k2/2))/L
k4 = (E - R * (y(i) + h*k3))/L
y(i+1) = y(i) + h/6*(k1 + 2*k2 + 2*k3 + k4)
printf("Soluo da iterao %d: ", i)
disp(y(i));
end
// Solucao exata
xe = 0:0.1:xf
ye = 6/5 - 6/5 * exp(-20*xe)
// Grafico: solucoes pelos metodos de Runge-Kutta e solucao exata
plot(x,y,'ob',xe,ye,'-k')
xlabel('x'); ylabel('y = y(x)')
legend('RK 4a ordem','Soluo Exata')

3.2. Marca-passo cardaco


Um marca-passo um pequeno aparelho eletrnico implantvel que envia pulsos eltricos ao
corao sempre que identifica lentido no batimento cardaco.
Seu circuito consiste de uma chave, uma bateria, um capacitor, e o corao como um resistor.
(ZILL, 2013). Quando a chave S est em P, o capacitor se carrega. Quando S est em Q, o
capacitor descarrega enviando um estmulo eltrico para o corao. Durante o tempo que o
estmulo eltrico aplicado ao corao, a tenso E atravs do corao satisfaz equao
diferencial linear:

1
=

Supondo, a ttulo de ilustrao para implementao do programa, que R = C = 1, foi utilizado o


Scilab para implementar o programa efetuando a soluo da EDO atravs do Mtodo de
Runge-Kutta.
Neste programa, h tambm uma comparao com a soluo analtica.
Soluo analtica da equao para R = C = 1:
() = 10
Programa implementado no Scilab:
// Marca-passo cardaco
// Programa para o calculo da E.D.O. dy/dt = -1/(R*C) * y(i)
// pelo metodo de Runge-Kutta de 4a ordem
// Condicao de contorno: y(0) = 12
// Solucao analitica: y(x) = 2 exp(x) - x - 1 Equaes Diferenciais Ordinrias 9

clear
clc
C=1
R=1
x(1) = 0 // valor inicial
y(1) = 12 // condicao de contorno (Runge-Kutta de 4a ordem)
h = input("Incremento h: ")
xf = input("Valor final de x: ")
n = floor((xf - x(1)) / h + 1) // Numero de intervalos
for i = 1:n-1
x(i+1) = x(i) + h;
// Runge-Kutta de 4a ordem
k1 = -1/(R*C) * y(i)
k2 = -1/(R*C) * (y(i) + h*k1/2)
k3 = -1/(R*C) * (y(i) + h*k2/2)
k4 = -1/(R*C) * (y(i) + h*k3)
y(i+1) = y(i) + h/6*(k1 + 2*k2 + 2*k3 + k4)
printf("Soluo da iterao %d: ", i)
disp(y(i));
end
// Solucao exata
xe = 0:0.1:xf
ye = 10 * exp(-xe)
// Grafico: solucoes pelos metodos de Runge-Kutta e solucao exata
plot(x,y,'ob',xe,ye,'-k')
xlabel('x'); ylabel('y = y(x)')
legend('RK 4a ordem','Soluo Exata')

REFERNCIA BIBLIOGRFICA
ZILL, D. G. Equaes Diferenciais com Aplicaes em Modelagem trad. da 9 ed. norteamericana, 2. Ed. So Paulo: Cengage Learning, 2013.

Você também pode gostar