program MetodoEulerMejorado
implicit none
real(8) :: x0, y0, xn, h
real(8) :: x, y, y_prime, y_temp
integer :: N, i
! Descripción del problema
print *, "Programa que aproxima la ED y'' = x - y, bajo las condiciones: y(0) = 1, h = 0.05, donde x va variando de 0 a 1."
print *, "Encuentra los valores de y mediante el método de Euler mejorado."
print *, ""
print *, ""
! Valores iniciales
x0 = 0.0d0
y0 = 1.0d0
! Valor final de x
xn = 1.0d0
! Tamaño del paso
h = 0.05d0
! Número de subintervalos
N = int((xn - x0) / h)
! Inicialización
x = x0
y = y0
! Resultado inicial
print *, "Valores de inicio:"
print '(A,F6.4)', "x =", x, ", y =", y
print *, "--------------------------"
! Iteración
do i = 1, N
y_prime = x - y ! y'' = x - y
y_temp = y + h * y_prime ! Estimación intermedia de y
y_prime = x + h - y_temp ! Recalcula la pendiente en el punto intermedio
y = y + h * (y_prime + y_prime) / 2.0d0 ! Método de Euler mejorado para y
x = x + h
! Imprimir el valor actual de x e y con 4 decimales
print *, "Iteración", i
print '(A,F6.4)', "x =", x, ", y =", y
end do
end program MetodoEulerMejorado
To embed this project on your website, copy the following code and paste it into your website's HTML: