Está en la página 1de 8

Métodos Numéricos

Aile Naomi Mendoza González

Método Secante.

Modelo Matemático.

El método de la secante parte de dos puntos (y no sólo uno como el método de


Newton) y estima la tangente (es decir, la pendiente de la recta) por una
aproximación de acuerdo con la expresión:

Sustituyendo esta expresión en la ecuación del método de Newton, obtenemos


la expresión del método de la secante que nos proporciona el siguiente punto
de iteración:

En la siguiente iteración, emplearemos los puntos x1 y x2para estimar un nuevo


punto más próximo a la raíz de acuerdo con la ecuación.

En general, el método de la secante presenta las mismas ventajas y


limitaciones que el método de Newton-Raphson explicado anteriormente.
Métodos Numéricos
Aile Naomi Mendoza González
Métodos Numéricos
Aile Naomi Mendoza González
Métodos Numéricos
Aile Naomi Mendoza González
Métodos Numéricos
Aile Naomi Mendoza González
Métodos Numéricos
Aile Naomi Mendoza González
Métodos Numéricos
Aile Naomi Mendoza González

Codigo
def metodo_secante(f, p_0, p_1, tol=10**-4, n=50):
"""
Método
:param f: Funcion a la que se le intenta encontrar una solucion para la
ecuacion f(x)=0, previamente definida
:param p_0: semilla (punto inicial)
:param p_1: semilla (punto inicial)
:param tol: toleracia, criterio de parada
:param n: número máximo de iteraciones, criterio de parada
:return: solución exacta o aproximada, si tiene.
"""
e_abs = abs(p_1 - p_0)

print('ite {:<2}: p_{:<2}={:.7f}'.format(0,0,p_0))


print('ite {:<2}: p_{:<2}={:.7f}, e_abs={:.7f}'.format(1,1,p_1,e_abs))

i = 2
while i <= n:
if f(p_1) == f(p_0): #división por cero
print('Solución no encontrada (error en los valores iniciales)')
return None

p_2 = p_0 - (f(p_0)*(p_1 - p_0))/(f(p_1) - f(p_0)) # fórmula método secante


e_abs = abs(p_2 - p_1)
print('ite {:<2}: p_{:<2}={:.7f}, e_abs={:.14f}'.format(i,i,p_2,e_abs))

if e_abs < tol: # criterio de parada


print('Solución encontrada x= {:.7f}, iteraciones: {}'. format(p_2,i))
return p_2
p_0 = p_1
p_1 = p_2
i += 1
print('Solución no encontrada, iteraciones agotadas: {}'.format(i-1))
return None

# Definición de la función
def f(x):
return x**x - 100

metodo_secante(f, 3, 3.2, 10**-15, 500)

El programa no me corrió debido a un problema que no puede resolver ,las graficas las saque con
otra aplicación
Métodos Numéricos
Aile Naomi Mendoza González

También podría gustarte