Curso: Métodos Numéricos
Tarea 5
ℎ = 0.1
𝑦 ′ = 3 cos(𝑦 − 5𝑥) , 𝑦(0) = 0
Planteamiento:
El método de Runge Kutta es aplicable en el momento de realizar las
aproximaciones numéricas de las soluciones de ecuaciones diferenciales de
primer grado cuando estas cuentan con condiciones iniciales, de esta forma se
establece un intervalo bajo el cual se deberá proceder con las iteraciones y
obtención de valores y un valor de una constante h que indicará la distancia que
existe entre uno y otro valor dentro del intervalo principal para la obtención de
una tabla de valores, con el fin de aplicar este método como primer paso se
establece el código en el programa octave, mismo que nos responderá con una
tabla de datos para la variable independiente x y la dependiente y, además de
que se graficará la curva procedente de la ecuación ingresada en el intervalo
dado.
Resolución:
Código en Octave “rungeKutta”
f = @(x,t) 3*cos(t-5*x);
xi = input("ingrese el valor inicial xi: ");
xf = input("ingrese el valor final xf: ");
h = input("ingrese el valor de paso h: ");
function [x, y] = rungeKutta(f, xi , xf, h)
x = xi:h:xf; % [ xi , xi=xi+h... xf ]
y(1) = 0; %asignando el primer valor al vector
for i=1:length(x)-1
k1 = f(x(i), y(i));
k2 = f(x(i) + (h/2), y(i) + ((k1*h)/2));
, k3 = f(x(i) + (h/2), y(i) + ((k2*h)/2));
k4 = f(x(i) + h, y(i)+ k3*h);
y(i+1) = y(i) + (1/6)*(k1 + 2*k2 + 2*k3 + k4)*h;
endfor
endfunction
[x, y] = rungeKutta(f, xi, xf, h);
fprintf("%s\t %s\n", "x" ,"y");
for i=1:length(x)
fprintf("%.4f\t", x(i));
fprintf("%.4f", y(i));
fprintf("\n");
endfor
plot(x, y,"r*")
xlabel("Eje x")
ylabel("Eje y")
title("grafica runge - kutta "
,Conclusión:
Se puede concluir que este método es bastante efectivo realizarlo en un
programa matemático e iterativo, ya que, como se puede observar, cuando el
intervalo es grande y el valor de h es pequeño, el numero de pares ordenados
que se consideran en la tabla de valores resultante es bastante grande, por ende,
se recomienda el uso del programa para la resolución del ejercicio.
Planteamiento:
, Con el fin de dar solución al ejercicio, se emplearán los métodos vistos en clases
sincrónicas y solicitados por el enunciado con el fin de encontrar una
aproximación a la solución numérica de la ecuación diferencial dada.
Resolución:
𝟏
a) 𝒚′ = 𝒕(𝒚𝟐 +𝒚) , 𝒚(𝟏) = 𝟐; 𝒕 ∈ [𝟏, 𝟑]
Método de Euler
𝑦(1) = 𝑦0 = 2
121
𝑦(1.1) = 𝑦1 = 2 + 0.1𝑓(1,2) = = 2.016
60
𝑦(1.2) = 𝑦2 = 2.016 + 0.1𝑓(1.1,2.016) = 2.0316
𝑦(1.3) = 𝑦3 = 2.0316 + 0.1𝑓(1.2,2.0316) = 2.0451
𝑦(1.4) = 𝑦4 = 2.0451 + 0.1𝑓(1.3,2.0451) = 2.0575
…
Método de Heun
𝑦(1) = 𝑦0 = 2
241
𝑦1∗ = 2 + 0.1𝑓(1,2) = = 2.016
120
0.1
𝑦(1.1) = 𝑦1 = 2 + [𝑓(1,2) + 𝑓(1.1,2.016)] = 2.0158
2
Tarea 5
ℎ = 0.1
𝑦 ′ = 3 cos(𝑦 − 5𝑥) , 𝑦(0) = 0
Planteamiento:
El método de Runge Kutta es aplicable en el momento de realizar las
aproximaciones numéricas de las soluciones de ecuaciones diferenciales de
primer grado cuando estas cuentan con condiciones iniciales, de esta forma se
establece un intervalo bajo el cual se deberá proceder con las iteraciones y
obtención de valores y un valor de una constante h que indicará la distancia que
existe entre uno y otro valor dentro del intervalo principal para la obtención de
una tabla de valores, con el fin de aplicar este método como primer paso se
establece el código en el programa octave, mismo que nos responderá con una
tabla de datos para la variable independiente x y la dependiente y, además de
que se graficará la curva procedente de la ecuación ingresada en el intervalo
dado.
Resolución:
Código en Octave “rungeKutta”
f = @(x,t) 3*cos(t-5*x);
xi = input("ingrese el valor inicial xi: ");
xf = input("ingrese el valor final xf: ");
h = input("ingrese el valor de paso h: ");
function [x, y] = rungeKutta(f, xi , xf, h)
x = xi:h:xf; % [ xi , xi=xi+h... xf ]
y(1) = 0; %asignando el primer valor al vector
for i=1:length(x)-1
k1 = f(x(i), y(i));
k2 = f(x(i) + (h/2), y(i) + ((k1*h)/2));
, k3 = f(x(i) + (h/2), y(i) + ((k2*h)/2));
k4 = f(x(i) + h, y(i)+ k3*h);
y(i+1) = y(i) + (1/6)*(k1 + 2*k2 + 2*k3 + k4)*h;
endfor
endfunction
[x, y] = rungeKutta(f, xi, xf, h);
fprintf("%s\t %s\n", "x" ,"y");
for i=1:length(x)
fprintf("%.4f\t", x(i));
fprintf("%.4f", y(i));
fprintf("\n");
endfor
plot(x, y,"r*")
xlabel("Eje x")
ylabel("Eje y")
title("grafica runge - kutta "
,Conclusión:
Se puede concluir que este método es bastante efectivo realizarlo en un
programa matemático e iterativo, ya que, como se puede observar, cuando el
intervalo es grande y el valor de h es pequeño, el numero de pares ordenados
que se consideran en la tabla de valores resultante es bastante grande, por ende,
se recomienda el uso del programa para la resolución del ejercicio.
Planteamiento:
, Con el fin de dar solución al ejercicio, se emplearán los métodos vistos en clases
sincrónicas y solicitados por el enunciado con el fin de encontrar una
aproximación a la solución numérica de la ecuación diferencial dada.
Resolución:
𝟏
a) 𝒚′ = 𝒕(𝒚𝟐 +𝒚) , 𝒚(𝟏) = 𝟐; 𝒕 ∈ [𝟏, 𝟑]
Método de Euler
𝑦(1) = 𝑦0 = 2
121
𝑦(1.1) = 𝑦1 = 2 + 0.1𝑓(1,2) = = 2.016
60
𝑦(1.2) = 𝑦2 = 2.016 + 0.1𝑓(1.1,2.016) = 2.0316
𝑦(1.3) = 𝑦3 = 2.0316 + 0.1𝑓(1.2,2.0316) = 2.0451
𝑦(1.4) = 𝑦4 = 2.0451 + 0.1𝑓(1.3,2.0451) = 2.0575
…
Método de Heun
𝑦(1) = 𝑦0 = 2
241
𝑦1∗ = 2 + 0.1𝑓(1,2) = = 2.016
120
0.1
𝑦(1.1) = 𝑦1 = 2 + [𝑓(1,2) + 𝑓(1.1,2.016)] = 2.0158
2