Explicacion Metodo Biseccion y Newton Raphson 2
Explicacion Metodo Biseccion y Newton Raphson 2
Explicacion Metodo Biseccion y Newton Raphson 2
1. Ingreso de datos:
o Se define la función f(x)=x3+4x2−10, y se establecen los límites del intervalo [a, b],
donde se espera encontrar la raíz de la función.
o Se define la tolerancia (tolera), que determina cuán cerca queremos estar de la raíz real.
2. Procedimiento:
o El algoritmo itera hasta que la longitud del intervalo [a, b] sea menor que la tolerancia
(tramo<tolera).
o Se evalúan las funciones en los extremos del intervalo y en el punto medio: f(a), f(b) y
f(c).
3. Salida:
En resumen, el uso de lambda es una manera conveniente de definir la función f(x), mientras que el uso
de NumPy en este código específico es sólo para la función ‘sign’, que puede ser reemplazada por una
versión pura de Python si se desea.
El uso de lambda en este código no está relacionado directamente con NumPy, aunque NumPy se utiliza
en el código. La función lambda en Python se usa para crear funciones pequeñas y anónimas de manera
rápida. En este caso, se usa para definir la función matemática f(x) = x^3 + 4x^2 - 10
1. Uso de lambda:
o lambda x: x**3 + 4*x**2 - 10 define una función anónima (sin nombre) que toma un
argumento x y devuelve el valor de x3+4x2−10.
def sign(x):
if x > 0:
return 1
elif x < 0:
return -1
else:
return 0
Explicación General
1. Ingreso de datos:
o Se define la función f(x) y su derivada f′(x).
o Se establece un valor inicial x0 y una tolerancia tolera.
2. Procedimiento:
o Se inicia una iteración con la suposición inicial x0.
o En cada iteración, se calcula una nueva aproximación utilizando la fórmula:
o Se calcula el tramo, que es la diferencia absoluta entre la nueva aproximación y la
anterior.
o Se almacena cada iteración en una tabla para análisis posterior.
o El proceso se repite hasta que el tramo es menor que la tolerancia.
3. Salida:
o Se imprime la tabla de iteraciones, la raíz aproximada y el error.
Código Detallado
Vamos a desglosar el código paso a paso.
# Importar numpy para trabajar con arreglos
import numpy as np
# INGRESO
# Definir la función f(x) y su derivada f'(x) usando lambda
fx = lambda x: x**3 + 4*(x**2) - 10
dfx = lambda x: 3*(x**2) + 8*x
# PROCEDIMIENTO
# Inicializar la tabla para almacenar las iteraciones
tabla = []
# Inicializar el tramo con un valor suficientemente grande
tramo = abs(2 * tolera)
# Inicializar xi con el valor inicial x0
xi = x0
# SALIDA
# Imprimir los encabezados de la tabla
print(['xi', 'xnuevo', 'tramo'])
# Configurar la impresión de numpy para mostrar 4 decimales
np.set_printoptions(precision=4)
# Imprimir la tabla de iteraciones
print(tabla)
# Imprimir la raíz aproximada y el error del tramo final
print('raiz en: ', xi)
print('con error de: ', tramo)
Si no usamos NumPy en este código, tendríamos que realizar algunos cambios para manejar las
iteraciones y la presentación de resultados sin las funciones de NumPy. Aquí está el código modificado
para no usar NumPy:
# INGRESO
# Definir la función f(x) y su derivada f'(x)
def fx(x):
return x**3 + 4*(x**2) - 10
def dfx(x):
return 3*(x**2) + 8*x
# PROCEDIMIENTO
# Inicializar la lista para almacenar las iteraciones
tabla = []
# Inicializar el tramo con un valor suficientemente grande
tramo = abs(2 * tolera)
# Inicializar xi con el valor inicial x0
xi = x0
# SALIDA
# Imprimir los encabezados de la tabla
print(['xi', 'xnuevo', 'tramo'])
# INGRESO
# Definir la función f(x) y su derivada f'(x)
def fx(x):
return x**3 + 4*(x**2) - 10
def dfx(x):
return 3*(x**2) + 8*x
# Suposición inicial y tolerancia
x0 = 2
tolera = 0.001
# PROCEDIMIENTO
# Inicializar la lista para almacenar las iteraciones
tabla = []
# Inicializar el tramo con un valor suficientemente grande
tramo = abs(2 * tolera)
# Inicializar xi con el valor inicial x0
xi = x0
# SALIDA
# Imprimir los encabezados de la tabla
print(['xi', 'xnuevo', 'tramo'])
Cambios detallados
1. Definición de funciones:
o Las funciones fx y dfx se definen usando def en lugar de lambda para mantener la
consistencia fuera del contexto de NumPy.
2. Eliminación de NumPy:
o No se importa NumPy al inicio del código.
3. Almacenamiento de iteraciones:
o La lista tabla se usa para almacenar las iteraciones.
4. Conversión y presentación de la tabla:
o En lugar de convertir la lista tabla a un arreglo de NumPy, se imprime
directamente.
o Al imprimir, se utiliza un bucle for para recorrer cada fila de tabla y se formatean
los valores para mostrar 4 decimales.
Justificación de cambios
Funciones fx y dfx: Se mantienen como funciones definidas por def para evitar el uso de
lambda en un entorno sin NumPy.
Manejo de iteraciones: La lista tabla sigue funcionando igual sin necesidad de
conversión a un arreglo de NumPy.
Presentación: Usamos bucles y formateo de cadenas para mostrar los resultados de las
iteraciones, logrando el mismo resultado que con NumPy pero sin su uso.
Este código proporciona la misma funcionalidad que el original pero sin depender de NumPy,
utilizando solo las funciones estándar de Python.