Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Universdad Autónoma de Querétaro Actividad 1 F́ısica computacional César Iván Rodŕıguez Rivas 221393 Fecha de entrega: 24 de noviembre 2022 1. Ecuaciones numéricas de los tres métodos aplicados al pro- blema del oscilador armónico simple. Para posición (Θ) ⇒ x1n y para velocidad (ω) ⇒ x2n Además: f1 = x2 y f2 = − gL ∗ sin(x1) 1.1. Primer orden x1n = x1 + h ∗ k11 x2n = x2 + h ∗ k12 donde: k11 = f1(tn, x1, x2) k12 = f2(tn, x1, x2) 1.2. Segundo orden x1n = x1 + h ∗ k21 x2n = x2 + h ∗ k22 donde: k11 = f1(tn, x1, x2) k12 = f2(tn, x1, x2) k21 = f1(tn + h 2 , x1 + h 2 ∗ k11, x2 + h 2 ∗ k21) k22 = f2(tn + h 2 , x1 + h 2 ∗ k21, x2 + h 2 ∗ k21) 1 1.3. Cuarto orden x1n = x1 + h 6 (k11 + 2 ∗ k12 + 2 ∗ k13 + k14) x2n = x2 + h 6 (k11 + 2 ∗ k12 + 2 ∗ k13 + k14) donde: k11 = f1(tn, x1, x2) k12 = f2(tn, x1, x2) k12 = f1(tn + h 2 , x1 + h 2 ∗ k11, x2 + h 2 ∗ k21) k22 = f2(tn + h 2 , x1 + h 2 ∗ k21, x2 + h 2 ∗ k21) k13 = f1(tn + h 2 , x1 + h 2 ∗ k21, x2 + h 2 ∗ k22) k23 = f2(tn + h 2 , x1 + h 2 ∗ k22, x2 + h 2 ∗ k22) k14 = f1(tn + h, x1 + h ∗ k13, x2 + h ∗ k23) k24 = f2(tn + h, x1 + h ∗ k23, x2 + h ∗ k23) 2. Graficas Figura 1: Posición vs tiempo; Runge Kutta de primer orden, segundo orden, cuarto orden; con N=100 2 Figura 2: Posición vs tiempo; Runge Kutta de primer orden, segundo orden, cuarto orden; con N=500 Figura 3: Posición vs tiempo; Runge Kutta de primer orden, segundo orden, cuarto orden; con N=1000 3 Figura 4: Velocidad vs tiempo; Runge Kutta de primer orden, segundo orden, cuarto orden; con N=100 Figura 5: Velocidad vs tiempo; Runge Kutta de primer orden, segundo orden, cuarto orden; con N=500 4 Figura 6: Velocidad vs tiempo; Runge Kutta de primer orden, segundo orden, cuarto orden; con N=1000 Figura 7: Posición vs velocidad; Runge Kutta de primer orden, segundo orden, cuarto orden; con N=100 5 Figura 8: Posición vs velocidad; Runge Kutta de primer orden, segundo orden, cuarto orden; con N=500 Figura 9: Posición vs velocidad; Runge Kutta de primer orden, segundo orden, cuarto orden; con N=1000 6 3. Códigos 3.1. Runge Kutta de primer orden PROGRAM RK1 ! Este programa r e su e l v e l a s e cuac ione s de l pendulo s imple ! usando e l metodo de Runge Kutta de primer orden IMPLICIT NONE REAL T,X1 ,X2 , Tin , X1in , X2in , PI , Tfi , h INTEGER N, i a l l o c a t a b l e : : T( : ) , X1 ( : ) , X2 ( : ) N=1000 a l l o c a t e (T(N) ,X1(N) ,X2(N) ) ! Tin=0.0 Tf i =5.0 h=(Tfi−Tin )/N X1in=45.0 X2in=0.0 ! PI=4.0∗ atan ( 1 . 0 ) X1in=X1in ∗(PI /180) X2in=X2in ∗(PI /180) ! T(1)=0.0 X1(1)=X1in X2(1)=X2in ! c a l l RK(T,X1 ,X2 ,N, h) OPEN(5 ,FILE=’PenduloRK1 . dat ’ ) DO i =1,N WRITE(5 ,∗ )T( i ) ,X1( i )∗(180/PI ) ,X2( i )∗(180/PI ) END DO CLOSE(5) END PROGRAM ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! SUBROUTINE RK(T,X1 ,X2 ,N, h) IMPLICIT NONE REAL T(N) ,X1(N) ,X2(N) , h INTEGER N, i ! DO i =2,N c a l l RKstep (T( i −1) ,X1( i −1) ,X2( i −1) ,T( i ) ,X1( i ) ,X2( i ) ,N, h) END DO ! RETURN END SUBROUTINE ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! SUBROUTINE RKstep (Tn,X1n ,X2n ,Tn1 , X1n1 , X2n1 ,N, h) IMPLICIT NONE REAL Tn,X1n ,X2n ,Tn1 , X1n1 , X2n1 , h , k11 , k21 , f1 , f 2 INTEGER N 7 ! k11=f1 (Tn,X1n ,X2n) ! f 1 es para obtener X1 X1n1=X1n+h∗k11 ! k21=f2 (Tn,X1n ,X2n) ! f 2 es para obtener X2 X2n1=X2n+h∗k21 ! Tn1=Tn+h ! Tiempo ! RETURN END SUBROUTINE ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! FUNCTION f1 (Tn,X1n ,X2n) IMPLICIT NONE REAL f1 ,Tn,X1n ,X2n ! f 1=X2n ! RETURN END FUNCTION ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! FUNCTION f2 (Tn,X1n ,X2n) IMPLICIT NONE REAL f2 ,Tn,X1n ,X2n , g , L ! g=9.81 L=1.0 ! f 2=−(g/L)∗ s i n (X1n) ! RETURN END FUNCTION ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 3.2. Runge Kutta de segundo orden PROGRAM RK2 ! Este programa r e su e l v e l a s e cuac ione s de l pendulo s imple ! usando e l metodo de Runge Kutta de segundo orden IMPLICIT NONE REAL T,X1 ,X2 , Tin , X1in , X2in , PI , Tfi , h INTEGER N, i a l l o c a t a b l e : : T( : ) , X1 ( : ) , X2 ( : ) N=500 a l l o c a t e (T(N) ,X1(N) ,X2(N) ) ! Tin=0.0 Tf i =5.0 h=(Tfi−Tin )/N X1in=45.0 X2in=0.0 8 ! PI=4.0∗ atan ( 1 . 0 ) X1in=X1in ∗(PI /180) X2in=X2in ∗(PI /180) ! T(1)=0.0 X1(1)=X1in X2(1)=X2in ! c a l l RK(T,X1 ,X2 ,N, h) OPEN(5 ,FILE=’PenduloRK2 . dat ’ ) DO i =1,N WRITE(5 ,∗ )T( i ) ,X1( i )∗(180/PI ) ,X2( i )∗(180/PI ) END DO CLOSE(5) END PROGRAM ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! SUBROUTINE RK(T,X1 ,X2 ,N, h) IMPLICIT NONE REAL T(N) ,X1(N) ,X2(N) , h INTEGER N, i ! DO i =2,N c a l l RKstep (T( i −1) ,X1( i −1) ,X2( i −1) ,T( i ) ,X1( i ) ,X2( i ) ,N, h) END DO ! RETURN END SUBROUTINE ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! SUBROUTINE RKstep (Tn,X1n ,X2n ,Tn1 , X1n1 , X2n1 ,N, h) IMPLICIT NONE REAL Tn,X1n ,X2n ,Tn1 , X1n1 , X2n1 , h , k11 , k21 , k12 , k22 , f1 , f 2 REAL h2 INTEGER N ! h2=h/2 .0 ! k11=f1 (Tn,X1n ,X2n) ! f 1 es para obtener X1 ! k21=f2 (Tn,X1n ,X2n) ! f 2 es para obtener X2 ! k12=f1 (Tn+h2 ,X1n+(h2∗k11 ) ,X2n+(h2∗k21 ) ) ! k22=f2 (Tn+h2 ,X1n+(h2∗k21 ) ,X2n+(h2∗k21 ) ) ! X1n1=X1n+(h∗k12 ) X2n1=X2n+(h∗k22 ) ! Tn1=Tn+h ! Tiempo ! RETURN END SUBROUTINE 9 ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! FUNCTION f1 (Tn,X1n ,X2n) IMPLICIT NONE REAL f1 ,Tn,X1n ,X2n ! f 1=X2n ! RETURN END FUNCTION ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! FUNCTION f2 (Tn,X1n ,X2n) IMPLICIT NONE REAL f2 ,Tn,X1n ,X2n , g , L ! g=9.81 L=1.0 ! f 2=−(g/L)∗ s i n (X1n) ! RETURN END FUNCTION ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 3.3. Runge Kutta de cuarto orden PROGRAM RK4 ! Este programa r e su e l v e l a s e cuac ione s de l pendulo s imple ! usando e l metodo de Runge Kutta de cuarto orden IMPLICIT NONE REAL T,X1 ,X2 , Tin , X1in , X2in , PI , Tfi , h INTEGER N, i a l l o c a t a b l e : : T( : ) , X1 ( : ) , X2 ( : ) N=500 a l l o c a t e (T(N) ,X1(N) ,X2(N) ) ! Tin=0.0 Tf i =5.0 h=(Tfi−Tin )/N X1in=45.0 X2in=0.0 ! PI=4.0∗ atan ( 1 . 0 ) X1in=X1in ∗(PI /180) X2in=X2in ∗(PI /180) ! T(1)=0.0 X1(1)=X1in X2(1)=X2in ! c a l l RK(T,X1 ,X2 ,N, h) OPEN(5 ,FILE=’PenduloRK4 . dat ’ ) 10 DO i =1,N WRITE(5 ,∗ )T( i ) ,X1( i )∗(180/PI ) ,X2( i )∗(180/PI ) END DO CLOSE(5) END PROGRAM ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! SUBROUTINE RK(T,X1 ,X2 ,N, h) IMPLICIT NONE REAL T(N) ,X1(N) ,X2(N) , h INTEGER N, i ! DO i =2,N c a l l RKstep (T( i −1) ,X1( i −1) ,X2( i −1) ,T( i ) ,X1( i ) ,X2( i ) ,N, h) END DO ! RETURN END SUBROUTINE ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! SUBROUTINE RKstep (Tn,X1n ,X2n ,Tn1 , X1n1 , X2n1 ,N, h) IMPLICIT NONE REAL Tn,X1n ,X2n ,Tn1 , X1n1 , X2n1 , h , k11 , k21 , k12 , k22 , k13 , k23 , k14 , k24 , f1 , f 2 REAL h2 , h6 INTEGER N ! h2=h/2 .0 h6=h/6 .0 ! k11=f1 (Tn,X1n ,X2n) ! f 1 es para obtener X1 k21=f2 (Tn,X1n ,X2n) ! f 2 es para obtener X2 k12=f1 (Tn+h2 ,X1n+(h2∗k11 ) ,X2n+(h2∗k21 ) ) k22=f2 (Tn+h2 ,X1n+(h2∗k11 ) ,X2n+(h2∗k21 ) ) k13=f1 (Tn+h2 ,X1n+(h2∗k12 ) ,X2n+(h2∗k22 ) ) k23=f2 (Tn+h2 ,X1n+(h2∗k12 ) ,X2n+(h2∗k22 ) ) k14=f1 (Tn+h ,X1n+(h∗k13) ,X2n+(h∗k23 ) ) k24=f2 (Tn+h ,X1n+(h∗k13 ) ,X2n+(h∗k23 ) ) ! X1n1=X1n+h6 ∗( k11+2∗(k12+k13)+k14 ) X2n1=X2n+h6 ∗( k21+2∗(k22+k23)+k24 ) ! Tn1=Tn+h ! Tiempo ! RETURN END SUBROUTINE ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! FUNCTION f1 (Tn,X1n ,X2n) IMPLICIT NONE REAL f1 ,Tn,X1n ,X2n ! f 1=X2n ! RETURN END FUNCTION 11 ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! FUNCTION f2 (Tn,X1n ,X2n) IMPLICIT NONE REAL f2 ,Tn,X1n ,X2n , g , L ! g=9.81 L=1.0 ! f 2=−(g/L)∗ s i n (X1n) ! RETURN END FUNCTION ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 12
Compartir