Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PROGRAM Metodo_Bolzano
- IMPLICIT NONE
- !---------------------------DECLARACION DE VARIABLES----------------------------
- REAL(8) Sup, Inf, Tolerancia, Bolzano
- WRITE(*,*)"Se procedera a realizar la aproximacion mediante el metodo de Bolzano"
- WRITE(*,*)"Introduzca el Infimo y el Supremo del intervalo"
- READ(*,*)Inf , Sup
- WRITE(*,*)"Introduzca la Tolerancia que desa tener para la raiz obtenida"
- READ(*,*)Tolerancia
- WRITE(*,*)Bolzano(Inf,Sup,Tolerancia)
- END PROGRAM
- REAL(8) FUNCTION Bolzano(Inf,Sup,Tolerancia)
- !-------------------DECLARACION DE VARIABLES FUNCION BOLZANO--------------------
- !Declaracion de la funcion
- REAL(8) Inf, Sup, Tolerancia !Variables de las que depende la funcion
- REAL(8)Incremento, Residuo, X_i, X !Variables de la funcion
- INTEGER K !Contador de iteraciones
- REAL(8)Func
- !---------------------ASIGNACION DE VALORES A LAS VARIABLES---------------------
- Incremento= Tolerancia + 5.D0
- Residuo= Tolerancia + 5.D0
- K=0
- X_i=0.D0
- !----------------------------SENTENCIAS EJECUTABLES-----------------------------
- !-------------------------------------------------------------------------------
- !-----------------------SENTENCIAS DE CONTROL DE HIPOTESIS----------------------
- IF (ABS(Func(Sup))<Tolerancia)THEN
- WRITE(*,*)"La funcion evaluada en",Sup,"es igual a cero, por lo que es una raiz de la funcion"
- STOP
- ELSEIF(ABS(func(Inf))<Tolerancia)THEN
- WRITE(*,*)"La funcion evaluada en",Inf,"es igual a cero por lo que es una raiz de la funcion"
- STOP
- ELSEIF (func(Sup)*func(Inf)>0.0)THEN
- WRITE(*,*)"Por Hipotesis del metodo, el intervalo ingresado no corresponde con las condiciones preestablecidas"
- WRITE(*,*)"No se descarta la posibilidad de que haya una raiz dentro del compacto"
- STOP
- END IF
- !---------------------SENTENCIAS EJECUTABLES DEL METODO-------------------------
- DO WHILE (Incremento>Tolerancia .OR. Residuo>Tolerancia)
- K=K+1 !Contador de iteraciones
- X_i= X !Reasignacion de valor a la variable X_i para que el bucle siga funcionando cuando sea necesario
- X=(Sup+Inf)/2.d0
- Incremento= ABS(Func(x)-Func(x_i))
- Residuo=ABS(Func(X))
- IF (Func(X)*Func(Inf)<=0.d0)THEN
- Sup=X
- ELSEIF(Func(X)*Func(Sup)<=0.d0)THEN
- Inf=X
- END IF
- END DO
- Bolzano=X
- END FUNCTION
- !-------------------------FUNCION A ANALIZAR EN EL EJERCICIO--------------------
- FUNCTION Func(X)
- REAL(8) Func , X
- Func= X**2.0+2.0*X-6.0
- END FUNCTION
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement