Subrutinas para la resolución de ecuaciones de una variable

Documentos relacionados
Subrutinas en Fortran 95 para la resolución de ecuaciones de una variable

Subrutinas en Fortran 95 para la resolución de ecuaciones no lineales de una variable

Implementación del esquema de deflación para ecuaciones algebraicas

Resolución de Ecuaciones No Lineales

Resolución numérica de ecuaciones no lineales

Creando fractales con el método de Newton

Dada f : [a, b] R R, continua, se plantea el problema de encontrar ceros de f, es decir raíces de la ecuación

SOLUCIÓN NUMÉRICA DE ECUACIONES ALGEBRAICAS Y TRASCENDENTES

CÁLCULO DE RAÍCES DE ECUACIONES NO LINEALES. Por Frednides Guillén

3. Métodos de resolución

SOLUCIÓN NUMÉRICA DE ECUACIONES ALGEBRAICAS Y TRASCENDENTES

Análisis Numérico: Soluciones de ecuaciones en una variable

METODO DE LA BISECCIÓN Si f : a, b es continua con f a f b 0,el procedimiento de la

OCW-V.Muto Métodos de interpolación Cap. XI CAPITULO XI. METODOS DE INTERPOLACION 1. EL METODO DE INTERPOLACION DE LA POSICION FALSA

OCW-V.Muto El algoritmo de bisección Cap. VI CAPITULO VI. EL ALGORITMO DE BISECCION 1. INTRODUCCION Y METODO

Resolución numérica de ecuaciones no lineales

Despejando, se tienen las siguientes ecuaciones de la forma : a) b)

Raíces de ecuaciones no lineales

Unidad I. Solución de ecuaciones no lineales 1. Métodos cerrados. LMM

MÉTODO DE NEWTON RAPHSON

CURSO DE METODOS NUMERICOS Año Académico Curso Tercero de Matemáticas EXAMEN FINAL FEBRERO

Métodos Numéricos (SC 854) Solución de ecuaciones no lineales. 1. Definición del problema: raíces de ecuaciones no lineales

Repaso de Cálculo

Resolución de ecuaciones no lineales y Método de Bisección

Relación de ejercicios 5

Tema 5: Resolución aproximada de ecuaciones

Ecuaciones No-Lineales y raices polinomiales

Solución de ecuaciones algebraicas y trascendentes: Conceptos generales

Clase adicional 7. Análisis numérico en Java. Temas

OCW-V.Muto El método de la Secante Cap. VIII CAPITULO VIII. EL METODO DE LA SECANTE 1. INTRODUCCION Y METODO

Solve[polinomio==0,x]

Tema 2 Resolución de EcuacionesNo Lineales

Solución de ecuaciones algebraicas y trascendentes: Método de la Interpolación lineal *

Práctica 4 Métodos de resolución numérica de ecuaciones

E.T.S. Minas: Métodos Matemáticos Soluciones Tema 3 Resolución aproximada de ecuaciones

Tema 2 Resolución numérica de ecuaciones: Métodos de iteración funcional

Objetivos. El alumno conocerá y aplicará el concepto aproximación numérica. Conocerá y resolverá, utilizando la computadora, ecuaciones algebraicas.

Raíces de Ecuaciones - Métodos de Intervalos (Simples)

E.T.S. Minas: Métodos Matemáticos Soluciones Tema 3: Resolución aproximada de ecuaciones

PRACTICA Núm. 2 Resolución numérica de ecuaciones no lineales

Ampliación de Matemáticas y Métodos Numéricos

Análisis Numérico para Ingeniería. Clase Nro. 7

Universidad De San Buenaventura CALI Guía de Métodos Numéricos Ingeniería Multimedia

Práctica IV: Métodos de Newton-Raphson y de la secante, para encontrar las raíces de una función.

Resolución de ecuaciones no lineales

3.4 El Teorema de Taylor. Extremos relativos

Análisis Numérico para Ingeniería. Clase Nro. 7

MÉTODO DE LA FALSA POSICIÓN (REGULA FALSI).

Despejando, se tienen las siguientes ecuaciones de la forma : a) b)

Resolución de ecuaciones no lineales

Métodos Numéricos Cap 3: Resolución de ecuaciones no lineales

Apellidos:... Nombre:... Examen

Facultad de Física. Métodos Numéricos

1 Método de la bisección. 1.1 Teorema de Bolzano Teorema 1.1 (Bolzano) Contenido

CEROS DE FUNCIONES. Laboratori de Càlcul Numèric (LaCàN) Universitat Politècnica de Catalunya (UPC)

METODOS DE SOLUCION DE SISTEMAS DE ECUACIONES

Resolución de Ecuaciones no lineales. Juan Manuel Rodríguez Prieto

CÁLCULO NUMÉRICO I (Tema 2 - Relación 1)

Soluciones de ecuaciones de una variable

2 Obtener el término general de las siguientes sucesiones definidas por recurrencia: y0 = a > 0

1. Método de bisección

CEROS DE FUNCIONES NO LINEALES

PRÁCTICA No. 2 RAÍCES DE ECUACIONES CON MÉTODOS ABIERTOS

Resolución de Ecuaciones no lineales. Juan Manuel Rodríguez Prieto

Aproximación discreta de mínimos cuadrados con lapack

3 RAÍCES REALES DE ECUACIONES NO-LINEALES. 3.1 Método de la bisección

Laboratori de Càlcul Numèric (LaCàN) Departament de Matemàtica Aplicada III Universitat Politècnica de Catalunya (Spain)

Métodos Iterativos para Ecuaciones no Lineales. Oldemar Rodríguez Rojas

4.- Búsqueda de raíces Agosto-Diciembre Dr. Servando López Aguayo

x 0 = aproximación inicial x n = g(x n 1 ) n 1 (3.6)

OCW-V.Muto Ecuaciones de una variable: Preliminares Cap. V CAPITULO V. SOLUCION APROXIMADA DE ECUACIONES DE UNA VARIABLE: PRELIMINARES

7. Forma de Lagrange para el polinomio interpolador. 9. Forma de Newton para el polinomio interpolador

METODOS NUMERICOS PARA RESOLVER ECUACIONES NO LINEALES

En cada iteración se descarta la mitad del intervalo que no contiene a la raíz (en la que f no cambia de signo).

El método de la secante, es uno de los métodos que se conocen como abierto. Por qué se llama un método abierto?

Ecuaciones no lineales. Búsqueda de ceros de funciones.

Método de la secante

Práctica 8 Resolución de ecuaciones y sistemas de ecuaciones con Mathematica

Problemas Ampliación de Matemáticas. Sistemas lineales 1.- Encontrar la factorización L U de las siguientes matrices:

TALLER DE MATEMÁTICAS NOTAS. Toda expresión algebraica del tipo. a n x n + a n 1 x n a 1 x + a 0. es un polinomio de grado n, si a n 0.

Solución de Ecuaciones No Lineales.

Solución numérica de ecuaciones no lineales de una variable

Unidad didáctica 11: Ecuaciones no lineales. Aproximaciones sucesivas. Método de Newton-Raphson. Ejercicios.

Últimas notas de SVD

Métodos Numéricos I. Curso Colección de Problemas Capítulo 3. Ecuaciones no lineales. Iteración funcional HOJA 1

OCW-V.Muto El método de Newton-Raphson Cap. IX CAPITULO IX. EL METODO DE NEWTON-RAPHSON 1. INTRODUCCION Y METODO

Lenguaje de Programación: C++

EXAMEN PARCIAL DE METODOS NUMERICOS (MB536)

Práctica 2ª : OPERADORES LÓGICOS Y RELACIONALES. CICLOS Y ESTRUCTURAS DE CONTROL. MÉTODOS DE RESOLUCIÓN DE UNA ECUACIÓN NO LINEAL.

TALLERES DE METODOS NUMERICOS SOLUCION NUMERICA DE ECUACIONES NO LINEALES

Resolución aproximada de ecuaciones no lineales

No es otra cosa, que la representación de los resultados de una función sobre el plano carteciano.

Raices de ECUACIONES NO LINEALES PRIMER PARCIAL TEMA 2

Universidad de Santiago de Chile Facultad de Ciencia Departamento de Matemática y Ciencias de la Computación

Aproximación numérica de raíces de ecuaciones y de sistemas de ecuaciones.

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERÍA DEPARTAMENTO DE MATEMÁTICA. CLAVE V _sR

Transcripción:

Subrutinas para la resolución de ecuaciones de una variable Pablo Santamaría v0.3 (Noviembre 2011) 1. Introducción En general, las raíces de una ecuación no lineal f(x) = 0 no pueden ser obtenidas por fórmulas explícitas cerradas, con lo que no es posible obtenerlas en forma exacta. De este modo, para resolver la ecuación nos vemos obligados a obtener soluciones aproximadas a través de algún método numérico. Estos métodos son iterativos, esto es, a partir de una o más aproximaciones iniciales para la raíz, generan una sucesión de aproximaciones x 0, x 1, x 2,... que esperamos convergan al valor de la raíz α buscada. El proceso iterativo se continúa hasta que la aproximación se encuentra próxima a la raíz dentro de una tolerancia ɛ > 0 preestablecida. Como la raíz no es conocida, dicha proximidad, medida por el error absoluto x n+1 α, no puede ser computada. Sin un conocimiento adicional de la función f(x) o su raíz, el mejor criterio para detener las iteraciones consiste en proceder hasta que la desigualdad x n+1 x n < ɛ x n+1 se satisfaga, dado que esta condición estima en cada paso el error relativo. Ahora bien, puede ocurrir en ciertas circunstancias que la desigualdad anterior nunca se satisfaga, ya sea por que la sucesión de aproximaciones diverge o bien que la tolerancia escogida no es razonable. En tal caso el método iterativo no se detiene nunca. Para evitar este problema consideramos además un número máximo de iteraciones a realizarse. Si este número es excedido entonces el problema debe ser analizado con más cuidado. Cómo se escoge un valor correcto para las aproximaciones iniciales requeridas por los métodos? No existe una respuesta general para esta cuestión. Para el método de bisección es suficiente conocer un intervalo que contenga la raíz, pero para el método de Newton, por ejemplo, la aproximación tiene que estar suficientemente cercana a la raíz para que funcione 1. En cualquier caso primeras aproximaciones iniciales para las raíces pueden ser obtenidas graficando la función f(x). En las siguientes secciones presentamos implementaciones de los métodos numéricos usuales como subrutinas fortran. Con el fin de proporcionar subrutinas de propósito general, las mismas tienen entre sus argumentos a la función f(x) involucrada, la cual pude ser entonces implementada por el usuario como un subprograma FUNCTION con el nombre que quiera, pero siempre debe asegurarse de declararla como EXTERNAL en el programa que realiza la llamada a la subrutina. Otros argumentos que requieren estas subrutinas son los valores para las aproximaciones iniciales que necesite el método, una tolerancia para la aproximación final de la raíz y un número máximo de iteraciones. La raíz aproximada es devuelta en otro de los argumentos. Dado que el método puede fallar utilizamos una variable entera como clave de error para advertir al programa principal. Si dicha clave es igual a cero, entonces el método funcionó correctamente y el valor devuelto es la raíz aproximada dentro de la tolerancia preescrita. Si la clave de error es, en cambio, distinta 1 De hecho, efectuando algunas iteraciones del método de bisección podemos obtener una buena aproximación para iniciar el método de Newton. 1

de cero, entonces ocurrió un error. La naturaleza del error dependerá del método, pero un error posible en todos ellos es que el número máximo de iteraciones fue alcanzado. Espero que este apunte les resulte útil, y como siempre, cualquier duda o sugerencia envíenla por e-mail a pablo@fcaglp.unlp.edu.ar. 2. Método de bisección El método de bisección comienza con un intervalo [a, b ] que contiene a la raíz. Entonces se computa el punto medio x 0 = (a + b)/2 del mismo y se determina en cual de los dos subintervalos [a, x 0 ] o [x 0, b ] se encuentra la raíz analizando el cambio de signo de f(x) en los extremos. El procedimiento se vuelve a repetir con el nuevo intervalo así determinado. Es claro que la raíz es acotada en cada paso por el intervalo así generado y que una estimación del error cometido en aproximar la raíz por el punto medio de dicho intervalo es igual a la mitad de la longitud del mismo. Esta estimación es utilizada, en la siguiente implementación del método, como criterio de paro para la sucesión de aproximaciones. SUBROUTINE BISECCION(F,XA,XB,N,TOL,RAIZ,ICLAVE) * METODO DE BISECCION para encontrar una solución * de f(x)=0 dada la función continua f en el intervalo * [a,b] donde f(a) y f(b) tienen signos opuestos. * F = Función que define la ecuación (arg entrada) * XA,XB = Extremos del intervalo (arg entrada) * Número de iteraciones realizadas (arg salida ) * TOL = Tolerancia para el error absoluto (arg entrada) * RAIZ = Aproximación de la solución (arg salida ) * -1 = no se puede proceder (f(x) de * igual signo en a y b) INTEGER N,ICLAVE DOUBLE PRECISION F,XA,XB,TOL,RAIZ INTEGER I DOUBLE PRECISION ERROR,A,B A = XA B = XB IF (F(A)*F(B).GT.0.0D0) THEN ICLAVE = -1 DO I=1,N 2

ERROR = (B-A)*0.5D0 RAIZ = A + ERROR IF (ERROR.LT.TOL) THEN IF (F(A)*F(RAIZ).GT.0.0D0) THEN A = RAIZ ELSE B = RAIZ DO 3. Método regula falsi El método de regula falsi (o método de posición falsa), procede en forma semejante al método de bisección analizando el cambio de signo de la función, pero en lugar de tomar el punto medio del intervalo, considera como siguiente aproximación la abscisa del punto de intersección de la recta que pasa por los dos puntos (x n, f(x n )), (x n 1, f(x n 1)) obtenidos en las aproximaciones anteriores, con el eje x. Este método, al igual que bisección, siempre converge (en tanto la función f(x) sea continua), pero distinto a éste, falla en dar un intervalo pequeño en el cual se encuentre contenida la raíz. SUBROUTINE REGULA_FALSI(F,XA,XB,N,TOL,RAIZ,ICLAVE) * METODO DE POSICION FALSA (REGULA FALSI) (o método * de las cuerdas) para encontrar una solución de * f(x)=0 dada la función continua f en el intervalo * [a,b] donde f(a) y f(b) tienen signos opuestos * F = Función que define la ecuación (arg entrada) * XA,XB = Extremos del intervalo (arg entrada) * Número de iteraciones realizadas (arg salida ) * TOL = Tolerancia para el error relativo(arg entrada) * RAIZ = Aproximación de la solución (arg salida ) * -1 = no se puede proceder (f(x) de * igual signo en a y b) * 0 = iteraciones excedidas INTEGER N,ICLAVE DOUBLE PRECISION F,XA,XB,TOL,RAIZ INTEGER I DOUBLE PRECISION A, B, FA, FB DOUBLE PRECISION FR, RAIZ0 3

A = XA B = XB FA = F(A) FB = F(B) IF (FA*FB.GT.0D0) THEN ICLAVE = -1 RAIZ0 = 0D+0 DO I=1,N RAIZ = A - FA*(B-A)/(FB-FA) IF (ABS((RAIZ-RAIZ0)/RAIZ).LT.TOL) THEN FR = F(RAIZ) IF (FA*FR.GT.0.0D0) THEN A = RAIZ FA = FR ELSE B = RAIZ FB = FR RAIZ0 = RAIZ DO 4. Método de Newton Raphson El método de Newton comienza con una aproximación inicial x 0 dada, a partir de la cual se genera la sucesión de aproximaciones x 1, x 2,..., siendo x n+1 la abscisa del punto de intersección del eje x con la recta tangente a f(x) que pasa por el punto (x n, f(x n )). Esto conduce a la fórmula de iteración x n+1 = x n f(x n) f, n = 1, 2,... (x n ) Nuestra implementación de la subrutina correspondiente requiere que se pase también como argumento no sólo la funcion f(x), sino también su derivada f (x), la cual debe ser implementada por el usuario, al igual que f(x), como una FUNCTION. SUBROUTINE NEWTON(F,DF,XX0,N,TOL,RAIZ,ICLAVE) * METODO DE NEWTON-RAPHSON para encontrar una * solución de f(x)=0 dada la función derivable * f y una aproximación inicial x0. * F = Función que define la ecuación (arg entrada) * DF = Función derivada de F (arg entrada) 4

* XX0 = Aproximación inicial (arg entrada) * Número de iteraciones realizadas(arg salida ) * TOL = Tolerancia del error relativo (arg entrada) * RAIZ = Estimación de la solución (arg salida) * ICLAVE = Clave de éxito (arg salida) INTEGER N, ICLAVE DOUBLE PRECISION F, DF, XX0, TOL, RAIZ INTEGER I DOUBLE PRECISION X0 X0 = XX0 DO I=1,N RAIZ = X0 - F(X0)/DF(X0) IF (ABS((RAIZ-X0)/RAIZ).LT.TOL) THEN X0 = RAIZ DO 5. Método de Newton para ecuaciones algebraicas En el caso particular en que f(x) es un polinomio, el método de Newton puede ser eficientemente implementado si la evaluación de f(x n ) (y su derivada) es realizada por el método iterativo de Horner. En efecto, supongamos que f(x) es un polinomio de grado m: f(x) = a 0 + a 1 x + a 2 x 2 + + a m x m, la evaluación de f(x n ) por la regla de Horner procede computando { b m = a m b k = a k + b k+1 x n k = m 1,..., 0 siendo, entonces b 0 = f(x n ), en tanto que f (x n ) es computada haciendo { c m = b m c k = b k + c k+1 x n k = m 1,..., 1 5

siendo, entonces c 1 = f (x n ). El método de Newton se reduce así a x n+1 = x n b 0 c 1 El procedimiento resultante se conoce a menudo como método de Birge Vieta. Nuestra implementación en la siguiente subrutina pasa los coeficientes del polinomio en un arreglo A de (M +1) componentes, siendo M el grado del polinomio (valor que también es requerido como argumento). Para simplificar el tratamiento de los subíndices, el arreglo es declarado con el índice inferior 0, no 1, de manera que A(0) = a 0, A(1) = a 1,..., A(M) = a m. SUBROUTINE BIRGE_VIETA(A,M,XX0,TOL,N,RAIZ,ICLAVE) * METODO DE BIRGE-VIETA para resolver ECUACIONES * ALGEBRAICAS: * * P (x) = 0 * * donde P es un polinomio de grado m de coeficientes * reales; basado en el método de Newton-Raphson * implementando el esquema de Horner para la evalua- * ción del polinomio y su derivada. * A = Arreglo unidimensional de 0 a M que * contiene los coeficientes del polinomio * (arg entrada) * XX0 = Aproximación inicial (arg entrada) * M = Grado del polinomio (arg entrada) * Número de iteraciones realizadas(arg salida ) * TOL = Tolerancia error relativo (arg entrada) * RAIZ = Estimación de la solución (arg salida ) INTEGER M, N DOUBLE PRECISION A(0:M) DOUBLE PRECISION XX0,TOL,RAIZ INTEGER ICLAVE INTEGER I, J DOUBLE PRECISION X0,B,C X0 = XX0 DO I=1,N * ------------------------- * Esquema de Horner * ------------------------- B = A(M) 6

C = A(M) DO J=M-1,1,-1 B = B*X0+A(J) C = C*X0+B DO B = B*X0+A(0) * ------------------------- * Método de Newton * ------------------------- RAIZ = X0 - B/C IF (ABS((RAIZ-X0)/RAIZ).LT.TOL) THEN X0 = RAIZ DO 6. Método de la secante El método de la secante procede a partir de dos aproximaciones iniciales obteniendo la aproximación x n+1 como la abscisa del punto de intersección del eje x con la recta secante que pasa por los puntos (x n 1, f(x n 1 )) y (x n, f(x n )). La fórmula de iteración es entonces (x n x n 1 ) x n+1 = x n f(x n ), n = 2, 3,... f(x n ) f(x n 1 ) El método de la secante, si bien no converge tan rápido como Newton, tiene la gran ventaja de no requerir la derivada de la función. Eso sí, ahora se necesitan dos aproximaciones iniciales para arrancar el método. SUBROUTINE SECANTE (F,XX0,XX1,N,TOL,RAIZ,ICLAVE) * ALGORITMO DE LA SECANTE para encontrar una solución * de f(x)=0, siendo f una función continua, dada las * aproximaciones iniciales x0 y x1. * F = Función que define la ecuación (arg entrada) * XX0,XX1 = Aproximaciones iniciales (arg entrada) * Número de iteraciones realizadas(arg salida ) * TOL = Tolerancia del error relativo (arg entrada) * RAIZ = Estimación de la solución (arg salida ) INTEGER N,ICLAVE DOUBLE PRECISION F,XX0,XX1,TOL,RAIZ 7

INTEGER I DOUBLE PRECISION X0, X1, FX0, FX1 X0 = XX0 X1 = XX1 FX0 = F(X0) FX1 = F(X1) DO I= 2,N RAIZ = X1 - FX1*((X1-X0)/(FX1-FX0)) IF (ABS((RAIZ-X1)/RAIZ).LT.TOL) THEN X0 = X1 FX0 = FX1 X1 = RAIZ FX1 = F(RAIZ) DO 7. Método de Müller El método de Müller empieza con tres aproximaciones iniciales x 0, x 1, x 2 y genera la sucesión de aproximaciones x 3, x 4,..., siendo x n+1 la abscisa del punto de intersección de la parábola que pasa por los tres puntos (x n, f(x n )), (x n 1, f(x n 1 )), (x n 2, f(x n 2 )). La determinación de x n+1 procede entonces resolviendo la ecuación cuadrática correspondiente (utilizando su expresión alternativa que resulta de racionalizar el numerador, para minimizar los errores de redondeo) y escogiendo de los dos valores posibles el más próximo a x n. Esto conduce al método iterativo donde c = f(x n ), 2c x n+1 = x n b + sign(b), n = 2, 3,... b 2 4ac b = f(x n) f(x n 1 ) + f(x n) f(x n 2 ) f(x n 1) f(x n 2 ), x n x n 1 x n x n 2 x n 1 x n 2 f(x n ) f(x n 1 ) f(x n 1) f(x n 2 ) x a = n x n 1 x n 1 x n 2. x n x n 2 Nótese que si, en algún paso, el discriminante de la ecuación cuadrática es negativo entonces la aproximación será un número complejo (gráficamente, esto significa que la parábola no corta el eje x en ninguno de sus puntos). De este modo, si se implementa con aritmética compleja, el método aproximará raices complejas cuando sea apropiado. Sin por otro lado, sólo nos interesa encontrar las raíces reales, es claro que en esta situación necesitamos escoger otro valor para la aproximación x n+1. Este valor, en nuestra implementación, será la ordenada del vértice de la parábola, el cual se obtiene, en la fórmula, tomando el discriminante igual a cero. 8

SUBROUTINE MULLER(F,XX0,XX1,XX2,N,TOL,RAIZ,ICLAVE) * ALGORITMO DE MULLER para encontrar una solución * de f(x)=0, siendo f una función continua, dada las * aproximaciones iniciales x0, x1 y x2. * F = Función que define la ecuación (arg entrada) * XX0,XX1,XX2 = Aproximaciones iniciales (arg entrada) * Número de iteraciones realizadas (arg salida ) * TOL = Tolerancia del error relativo (arg entrada) * RAIZ = Estimación de la solución (arg salida ) DOUBLE PRECISION F,XX0,XX1,XX2,TOL,RAIZ INTEGER N,ICLAVE INTEGER I DOUBLE PRECISION X0,X1,X2 DOUBLE PRECISION F0,F1,F2 DOUBLE PRECISION DIF21,DIF20,DIF10 DOUBLE PRECISION B,A,DELTA,DISCR X0 = XX0 X1 = XX1 X2 = XX2 F0 = F(X0) F1 = F(X1) F2 = F(X2) DO I= 3,N DIF21 = (F2 - F1)/(X2-X1) DIF20 = (F2 - F0)/(X2-X0) DIF10 = (F1 - F0)/(X1-X0) A = (DIF21 - DIF10)/(X2 - X0) B = DIF21 + DIF20 - DIF10 DISCR = B*B - 4.0D0*A*F2 IF (DISCR.GT.0.D0) THEN DISCR = SQRT(DISCR) ELSE DISCR = 0.D0 IF (B.LT.0.D0) DISCR = - DISCR DELTA = -2.0D0*F2/(B+DISCR) RAIZ = X2 + DELTA IF (ABS(DELTA).LE.TOL) THEN 9

X0 = X1 F0 = F1 X1 = X2 F1 = F2 X2 = RAIZ F2 = F(RAIZ) DO C --------------------------------------------------- 8. Iteración de punto fijo El método de punto fijo requiere que se reescriba la ecuación f(x) = 0 en la forma x = φ(x) y entonces, a partir de una aproximación inicial x 0, se obtiene la sucesión de aproximaciones x 1, x 2,... según x n+1 = φ(x n ), n = 1, 2,... En la siguiente implementación, es importante recordar que la función que es pasada por argumento es ahora φ(x) y no f(x), función que debe ser implementada por el usuario como una FUNCTION. SUBROUTINE PUNTO_FIJO(FI,XX0,N,TOL,RAIZ,ICLAVE) * ALGORITMO DE PUNTO FIJO o DE APROXIMACIONES SUCESIVAS * para encontrar una solución de x=fi(x) dada una * aproximación inicial x0. * FI = Función que define la ecuación (arg entrada) * XX0 = Aproximación inicial (arg entrada) * Número de iteraciones realizadas (arg salida ) * TOL = Tolerancia del error relativo (arg entrada) * RAIZ = Estimación de la solución (arg salida ) INTEGER ICLAVE,N DOUBLE PRECISION FI,X0,TOL,RAIZ X0 = XX0 DO I=1,N RAIZ = FI(X0) IF (ABS((RAIZ-X0)/RAIZ).LT.TOL) THEN 10

X0 = RAIZ DO 11