Escolar Documentos
Profissional Documentos
Cultura Documentos
𝑦(3) ≈ 𝑤3 = 1.440573
0.275 − 1.440573
+ 0.25 ( )
2
= 1.64252.
𝑦(0) = 1
Cristian Amador Loli Prudencio Página 4 Métodos Numéricos para Ing.
Usando un tamaño de paso de 0.5, luego compare 𝑦(0.5) ≅ 𝑤2 = 1 + 4.5546875(0.5)
los resultados. = 3.27734375
k1 f (0,1) 8.5
Observe que si la EDO está en función sólo de 𝑡, Por último, las cuatro estimaciones de la
este método de tercer orden se reduce a la regla pendiente se combinan para obtener una
de Simpson 1/3. pendiente promedio, la cual se utiliza después
para realizar la última predicción al final del
MÉTODO DE RUNGE-KUTTA DE CUARTO ORDEN intervalo.
El más popular de los métodos RK es el de cuarto 1
orden. Como en el caso de los procedimientos de 𝜙 = [3 + 2(3.510611) + 2(3.446785)
6
segundo orden, hay un número infinito de + 4.105603] = 3.503399
versiones. La siguiente, es la forma comúnmente
𝑦(0.5) ≅ 𝑤2 = 2 + 3.503399(0.5) = 3.751669
usada y, por lo tanto, le llamamos método clásico
RK de cuarto orden (RK4): Que es muy aproximada a la solución verdadera
1 de 3.751521.
𝑤𝑖+1 = 𝑤𝑖 + 6 (𝑘1 + 2𝑘2 + 2𝑘3 + 𝑘4 )ℎ (7)
IMPLEMENTACIÓN NUMÉRICA DE RK4
Donde
k1 f (ti , wi ) Programa heun.m
% Método de Runge-Kutta de orden 4
% Resuelve y' = fun(t, y) en [a,b]
h kh
k2 f (ti , wi 1 ) % con condición inicial y1
2 2 a=input('Ingrese a=');
b=input('Ingrese b=');
h k2 h n=input('Ingrese num. intervalos,n=');
k3 f (ti , wi ) y1=input('Ingrese valor inicial, y1=');
2 2 h = (b-a)/n;
k4 f (ti h, wi k3h) y(1)=y1;
fun=input('Ingrese f(t,y)=','s');
f=inline(fun,'t','y');
fprintf('Aproximaciones\n');
Ejemplo 4: Utilice el método clásico RK de cuarto for i = 1:n
orden para resolver el problema de valor inicial t(i) = a+(i-1)*h;
k1 = f(t(i),y(i));
k2 = f(t(i)+h/2,y(i)+k1*h/2);
𝑦 ′ = 4𝑒 0.8𝑡 − 0.5𝑦 con 𝑡 ∈ [0; 0.5] k3 = f(t(i)+h/2,y(i)+k2*h/2);
k4 = f(t(i)+h,y(i)+k3*h);
y(i+1) = y(i)+1/6*(k1+2*k2+2*k3+k4)*h;
𝑦(0) = 2 fprintf('%d\n',i);
fprintf('k1=%.6f\n',k1);
fprintf('k2=%.6f\n',k2);
Usando un tamaño de paso de 0.5. fprintf('k3=%.6f\n',k3);
fprintf('k4=%.6f\n',k4);
fprintf('y(%.4f)=%.6f\n',t(i)+h,y(i+1));
Solución: end
t(n+1) = b;
En este caso, la pendiente al inicio del intervalo se plot(t, y, 'o-');
xlabel('Eje t');ylabel('Eje y');
calcula como sigue: title('Método de Runge-Kutta de orden 4');
[t,y] = ode45(odefun,xspan,y1)