! 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
To embed this project on your website, copy the following code and paste it into your website's HTML: