! Fisica computacional (2:00-3:00 pm)
! Elaborado por Nalleli Iridian Avila Garcia (1941603)

program rocket
    implicit none
    double precision, dimension(5) :: t = [1,10,20,30,40]
    double precision, dimension(5) :: m = [1200,1100,1005,910,900]
    double precision, dimension(5) :: dm
    double precision :: V = 10**3
    double precision :: v0 = 10**4
    double precision :: c = 3.0d8
    double precision :: v
    integer :: i

    ! Calcular dm/dt usando diferencias centradas
    ! Usamos diferencias hacia adelante para el primer punto y diferencias hacia atrás para el último punto.
    dm(1) = (m(2) - m(1)) / (t(2) - t(1))
    dm(5) = (m(5) - m(4)) / (t(5) - t(4))

    ! Para los puntos intermedios usamos diferencias centradas.
    do i=2,4
        dm(i) = (m(i+1) - m(i-1)) / (t(i+1) - t(i-1))
    end do

    ! Resolver la ecuación diferencial usando el método de Euler.
    ! Iniciamos con la velocidad inicial v0 y actualizamos la velocidad en cada paso de tiempo.
    v = v0
    do i=1,4
        v = v + (V*dm(i)/sqrt(1-v**2/c**2))*10  ! Paso de 10 segundos
        if (t(i) == 20) exit  ! Salir del bucle cuando t=20
    end do

    print*, 'La velocidad del cohete en t=20s es ', v, ' m/s'
end program rocket

Embed on website

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