vuoi
o PayPal
tutte le volte che vuoi
PROGRAM archimede
IMPLICIT NONE
REAL,EXTERNAL::k,f,df
REAL,PARAMETER::pacqua=1000,pglic=1260,pbenz=680,h0=-1,g=9.8
REAL::x,t,v,dt,xnulla
INTEGER::i
x=h0
v=0
t=0.1
!--------------------- RICERCA DEGLI ZERI -------------------------!
!Metodo di Newton
DO i=1,1000
t=t-(f(t,pacqua)/df(t,pacqua))
END DO
WRITE(*,10) t,f(t,pacqua)
10 FORMAT(F9.6,1X,E13.6)
!--------------------- EQUAZIONI DIFFERENZIALI ---------------------!
t=0
dt=0
WHILE (x<0)DO
xnulla=x
x=x+v*dt
v=v+k(pacqua)*dt
dt=1.0E-04
t=t+dt
END DO
WRITE(*,10) t,xnulla
!--------------------- SOLUZIONE ANALITICA -------------------------!
t=sqrt((-2*h0)/k(pacqua))
WRITE(*,10) t,f(t,pacqua)
!*******************************************************************!
END PROGRAM archimede
REAL FUNCTION k(p)!Soluzione Analitica in funzione di p (densità del liquido)
IMPLICIT NONE
REAL,INTENT(IN)::p
REAL,PARAMETER::plegno=750,g=9.8
k=((p-plegno)/plegno)*g
RETURN
END FUNCTION
REAL FUNCTION f(t,p)!Funzione Traiettoria - Calcolo di t con il metodo degli zeri
IMPLICIT NONE
REAL,INTENT(IN)::t,p
REAL,EXTERNAL::k
REAL,PARAMETER::h0=-1
f=h0+(k(p)*(t**2))/2
RETURN
END FUNCTION
REAL FUNCTION df(t,p)
IMPLICIT NONE
REAL,INTENT(IN)::t,p
REAL,EXTERNAL::k
df=k(p)*t