vuoi
o PayPal
tutte le volte che vuoi
X_a=x
!----------------------------- RICERCA ZERI SULLA DERIVATA NUMERICA -------------------
e1=0
e2=1
x=(e1+e2)/2.0
WHILE((e2-e1)>1.0E-06)DO !Anche qui utlizzo un WHILE...DO per fissare una condizione di arresto
IF (d(x,h,b)*d(e1,h,b)<0) THEN
e2=x
ELSE
e1=x
END IF
x=(e1+e2)/2
END DO
X_n=x
!------------------------------ RICERCA MINIMO NUMERICO -------------------------------
x=e1
min=e1
WHILE (x<e2) DO !La condizione di questo WHILE...DO restringe le iterazioni all'intervallo desiderato
x=x+h
IF(x<min)THEN
min=x
END IF
END DO
WRITE(*,11) b,X_a,X_n,min
WRITE(8,11) b,X_a,X_n,min
11 FORMAT(I3,1X,F8.6,1X,F8.6,1X,F8.6)
b=b**2
END DO
CLOSE(8)
END PROGRAM minimo
!-------------------------------F'n(x)-----------------------------------
REAL FUNCTION d(x,h,b)!Derivata numerica
REAL,EXTERNAL:: f
REAL,INTENT(IN)::x,h
INTEGER,INTENT(IN)::b
d=(f(x+h,b)-f(x-h,b))/(2*h)
return
END FUNCTION
!------------------------------ F(x) ----------------------------------
REAL FUNCTION f(x,b)
IMPLICIT NONE
REAL,INTENT(IN):: x
INTEGER,INTENT(IN)::b
f=1/exp(b*x)- 1/exp(x)
RETURN
END FUNCTION
!------------------------------ F'(x) -------------------------------------
REAL FUNCTION g(x,b) !Derivata analitica della funzione
IMPLICIT NONE
REAL,INTENT(IN)::x
INTEGER,INTENT(IN)::b
g=-b/exp(b*x)+1/exp(x)