0% encontró este documento útil (0 votos)
9 vistas3 páginas

% RK2 Heun

El documento presenta implementaciones de varios métodos numéricos para resolver ecuaciones diferenciales, incluyendo RK2 (Heun, Ralston, Punto medio), RK3 y RK4. Cada método se describe con un bloque de código que establece condiciones iniciales, itera a través de un número específico de pasos y calcula los valores de la función en cada iteración. Se utilizan diferentes fórmulas para calcular las pendientes y los valores de la función, mostrando la evolución de los resultados en cada método.

Cargado por

dalmiro duarte
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como ODT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
9 vistas3 páginas

% RK2 Heun

El documento presenta implementaciones de varios métodos numéricos para resolver ecuaciones diferenciales, incluyendo RK2 (Heun, Ralston, Punto medio), RK3 y RK4. Cada método se describe con un bloque de código que establece condiciones iniciales, itera a través de un número específico de pasos y calcula los valores de la función en cada iteración. Se utilizan diferentes fórmulas para calcular las pendientes y los valores de la función, mostrando la evolución de los resultados en cada método.

Cargado por

dalmiro duarte
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como ODT, PDF, TXT o lee en línea desde Scribd

% RK2 Heun

format long

xi = 0; % condiciones iniciales
yi = 1; % condiciones iniciales
ite = 5; % cambiar iteraciones
h = 0.5; % cambiar paso
z = 1;
y = 1;
yi1(1) = yi;

for (z=1: 1: ite)


k1 = -(2*(xi^3)) + (12*(xi^2)) - (20*xi) + 8.5; % cambiar funcion xi, yi1(z)
xk2 = xi + ((1) * h);
yk2 = yi1(z) + ((1) * k1 * h);
k2 = -(2*(xk2^3)) + (12*(xk2^2)) - (20*xk2) + 8.5; % cambiar funcion xk2, yk2

yi1(z + 1) = yi1(z) + ( (((1 / 2) * k1) + ((1/2) * k2)) * h );


xi = xi + h;
end
yi1

--------------
% RK2 Ralston
format long

xi = 0; % condiciones iniciales
yi = 1; % condiciones iniciales
ite = 5; % cambiar iteraciones
h = 0.2; % cambiar paso
z = 1;
y = 1;
yi1(1) = yi;

for (z=1: 1: ite)


k1 = -(2*(xi^3)) + (12*(xi^2)) - (20*xi) + 8.5; % cambiar funcion xi, yi1(z)
xk2 = xi + ((3 / 4) * h);
yk2 = yi1(z) + ((3 / 4) * k1 * h);
k2 = -(2*(xk2^3)) + (12*(xk2^2)) - (20*xk2) + 8.5; % cambiar funcion xk2, yk2

yi1(z + 1) = yi1(z) + ( (((1 / 3) * k1) + ((2/3) * k2)) * h );


xi = xi + h;
end
yi1

–------------
% RK2 Punto medio
format long
xi = 0; % condiciones iniciales
yi = 1; % condiciones iniciales
ite = 5; % cambiar iteraciones
h = 0.5; % cambiar paso
z = 1;
y = 1;
yi1(1) = yi;

for (z=1: 1: ite)


k1 = -(2*(xi^3)) + (12*(xi^2)) - (20*xi) + 8.5; % cambiar funcion xi, yi1(z)
xk2 = xi + ((1 / 2) * h);
yk2 = yi1(z) + ((1 / 2) * k1 * h);
k2 = -(2*(xk2^3)) + (12*(xk2^2)) - (20*xk2) + 8.5; % cambiar funcion xk2, yk2

yi1(z + 1) = yi1(z) + (k2 * h);


xi = xi + h;
end
yi1

–---------

% RK3
format long

xi = 0; % condiciones iniciales
yi = 1; % condiciones iniciales
h = 0.2; % cambiar paso
ite = 5; % cambiar iteraciones
z = 1;
yi1(1) = yi;

fprintf(' n x RK3\n\n');
fprintf(' 1 0.00 1.00000000\n')

for(z=1:1:ite)
k1 = (1 + (2 * xi)) * sqrt(yi1(z)); % cambiar funcion xi, yi1(z)
xk2 = xi + ((1/2) * h);
yk2 = yi1(z) + ((1/2) * k1 * h);
k2 = (1 + (2 * xk2)) * sqrt(yk2); % cambiar funcion xk2, yk2
xk3 = xi + h;
yk3 = yi1(z) - (k1 * h) + (2 * k2 * h);
k3 = (1 + (2 * xk3)) * sqrt(yk3); % cambiar funcion xk3, yk3

yi1(z + 1) = yi1(z) + ((1/6) * (k1 + (4 * k2) + k3) * h);


xi = xi + h;
fprintf('%2.0f %2.2f %3.8f\n', (z+1), xi, yi1(z+1));
end
-----------
% RK4
format long

xi=0; % condiciones iniciales


yi=1; % condiciones iniciales
ite=10; % cambiar iteraciones
h=0.2; % cambiar paso
z=1;
yi1(1)=yi;

fprintf(' n x RK4\n\n')
fprintf(' 1 0 1.00000000\n')

for(z=1:1:ite)

k1 = (1 + (2 * xi)) * sqrt(yi1(z)); % cambiar funcion xi, yi1(z)


xk2 = xi+((1/2)*h);
yk2 = yi+((1/2)*k1*h);
k2 = (1 + (2 * xk2)) * sqrt(yk2); % cambiar funcion xk2, yk2
xk3 = xi+((1/2)*h);
yk3 = yi+((1/2)*k2*h);
k3 = (1 + (2 * xk3)) * sqrt(yk3); % cambiar funcion xk3, yk3
xk4 = xi+h;
yk4 = yi+(k3*h);
k4 = (1 + (2 * xk4)) * sqrt(yk4); % cambiar funcion xk4, yk4
yi1(z+1) = (yi1(z)+((1/6)*(k1+(2*k2)+(2*k3)+k4)*h));
xi = xi+h;
fprintf('%2.0f %2.2f %3.8f\n',(z+1),xi,yi1(z+1))

end

También podría gustarte