Game Guides > Game FAQ >  

Fortran program birge vieta

Fortran program birge vieta
SUBROUTINE birge_vieta(a,m,x0,n,tol,raiz,clave) ! ------------------------------------------------------------------- IMPLICIT NONE INTEGER, INTENT(IN):: m ! Grado del polinomio REAL, DIMENSION(0:m), INTENT(IN) :: a ! Vector de m+1 elementos ! de los coef. del polinomio REAL, INTENT(IN) :: x0 ! Aproximación inicial a la raíz REAL, INTENT(IN) :: tol ! Tolerancia para el error absolut INTEGER, INTENT(INOUT) :: n ! Número máximo de iteraciones/ ! Iteraciones realizadas REAL, INTENT(OUT):: raiz ! Aproximación a la raiz INTEGER, INTENT(OUT) :: clave ! Clave de éxito: ! 0 : éxito ! >0 : iteraciones excedidas ! ------------------------------------------------------------------- INTEGER :: i, j REAL :: xx0,b,c ! ------------------------------------------------------------------- xx0 = x0 DO i=1,n ! ------------------------- ! Esquema de Horner ! ------------------------- b = a(m) c = a(m) DO j=m-1,1,-1 b = b*xx0+a(j) c = c*xx0+b ENDDO b = b*xx0+a(0) ! ------------------------- ! Método de Newton ! ------------------------- raiz = xx0 - b/c IF (ABS((raiz-xx0)/raiz) < tol) THEN clave = 0 n = i RETURN END IF xx0 = raiz END DO clave = 1 RETURN END SUBROUTINE birge_vieta