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

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: