Advertisement
Thomas_Lillieskold

Bolzanos Method

Sep 10th, 2022 (edited)
551
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. PROGRAM Metodo_Bolzano
  2.     IMPLICIT NONE
  3.  
  4. !---------------------------DECLARACION DE VARIABLES----------------------------
  5. REAL(8) Sup, Inf, Tolerancia, Bolzano
  6. WRITE(*,*)"Se procedera a realizar la aproximacion mediante el metodo de Bolzano"
  7.  
  8. WRITE(*,*)"Introduzca el Infimo y el Supremo del intervalo"
  9. READ(*,*)Inf , Sup
  10.  
  11. WRITE(*,*)"Introduzca la Tolerancia que desa tener para la raiz obtenida"
  12. READ(*,*)Tolerancia
  13.  
  14. WRITE(*,*)Bolzano(Inf,Sup,Tolerancia)
  15.  
  16. END PROGRAM
  17.  
  18.  
  19. REAL(8) FUNCTION Bolzano(Inf,Sup,Tolerancia)
  20. !-------------------DECLARACION DE VARIABLES FUNCION BOLZANO--------------------
  21.                                    !Declaracion de la funcion
  22. REAL(8) Inf, Sup, Tolerancia       !Variables de las que depende la funcion
  23. REAL(8)Incremento, Residuo, X_i, X              !Variables de la funcion
  24. INTEGER K                                       !Contador de iteraciones
  25. REAL(8)Func  
  26.  
  27.  
  28. !---------------------ASIGNACION DE VALORES A LAS VARIABLES---------------------
  29.  
  30. Incremento= Tolerancia + 5.D0
  31.  
  32. Residuo= Tolerancia + 5.D0
  33.  
  34. K=0
  35.  
  36. X_i=0.D0
  37.  
  38. !----------------------------SENTENCIAS EJECUTABLES-----------------------------
  39.  
  40. !-------------------------------------------------------------------------------
  41.  
  42. !-----------------------SENTENCIAS DE CONTROL DE HIPOTESIS----------------------
  43.  
  44.     IF (ABS(Func(Sup))<Tolerancia)THEN
  45.     WRITE(*,*)"La funcion evaluada en",Sup,"es igual a cero, por lo que es una raiz de la funcion"
  46.     STOP
  47. ELSEIF(ABS(func(Inf))<Tolerancia)THEN
  48.     WRITE(*,*)"La funcion evaluada en",Inf,"es igual a cero por lo que es una raiz de la funcion"
  49.     STOP
  50. ELSEIF (func(Sup)*func(Inf)>0.0)THEN
  51.     WRITE(*,*)"Por Hipotesis del metodo, el intervalo ingresado no corresponde con las condiciones preestablecidas"
  52.     WRITE(*,*)"No se descarta la posibilidad de que haya una raiz dentro del compacto"
  53.     STOP
  54. END IF
  55.  
  56. !---------------------SENTENCIAS EJECUTABLES DEL METODO-------------------------
  57.  
  58. DO WHILE (Incremento>Tolerancia .OR. Residuo>Tolerancia)
  59.  
  60.     K=K+1    !Contador de iteraciones
  61.  
  62.     X_i= X   !Reasignacion de valor a la variable X_i para que el bucle siga funcionando cuando sea necesario
  63.  
  64.     X=(Sup+Inf)/2.d0
  65.  
  66.     Incremento= ABS(Func(x)-Func(x_i))
  67.  
  68.     Residuo=ABS(Func(X))
  69.  
  70.     IF (Func(X)*Func(Inf)<=0.d0)THEN
  71.  
  72.         Sup=X
  73.  
  74.     ELSEIF(Func(X)*Func(Sup)<=0.d0)THEN
  75.  
  76.         Inf=X
  77.  
  78.     END IF
  79. END DO
  80. Bolzano=X
  81. END FUNCTION
  82.  
  83. !-------------------------FUNCION A ANALIZAR EN EL EJERCICIO--------------------
  84.  
  85. FUNCTION Func(X)
  86.     REAL(8) Func , X
  87.     Func=  X**2.0+2.0*X-6.0
  88. END FUNCTION
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement