Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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 + + )
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.
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 )
+ = ()
Isolando-se , tem-se:
= 2(12 10)
[ 20 ] = 24 20
6
5
6
6 20
5 .
5
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')
1
=
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.