import numpy as np import matplotlib.pyplot as plt def funcion(x): return np.exp(x)- 3*x def graficar_funcion(): x=np.linspace(0,3,100) y=funcion(x) plt.plot(x,y,label=r'$f(x)=e^x-3x$') plt.axhline (0,color='black', linewidth=1) plt.axvline (0,color='black', linewidth=1) plt.xlabel('x') plt.ylabel('f(x)') plt.title ('Gráfico de la función $f(x)=e^x-3x$') plt.legend() plt.grid(True) plt.show() graficar_funcion() #Método de Bisección import math xi = float(input('Ingrese el valor del punto xi (límite inferior): ')) xs = float(input('Ingrese el valor del punto xs (límite superior): ')) es = float(input('Ingrese el error estimado: ')) def funcion(x): return math.exp(x) - 3 * x if funcion(xi) * funcion(xs) > 0: print('Elegir otro intervalo, no contiene una raíz o contiene un número par de raíces') else: print('El intervalo [' + str(xi) + ', ' + str(xs) + '] contiene por lo menos una raíz') ea = 1 i = 0 xr = xi encontrar_raiz=False while ea > es and not encontrar_raiz: xr_prev = xr xr = (xi + xs) / 2 if funcion(xr) == 0: # Si xr es la raíz exacta encontrar_raiz=True elif funcion(xi) * funcion(xr) < 0: # La raíz está en el intervalo [xi, xr] xs = xr else: # La raíz está en el intervalo [xr, xs] xi = xr # Calcular el error aproximado relativo si no es la primera iteración if i > 0: ea = abs((xr - xr_prev) / xr) * 100 i += 1 # SALIDA print('xr: ', xr) print('Error aproximado: ', ea) print('Número de iteraciones: ', i) #Metodo de Regla Falsa import math xi = float(input('Ingrese el valor del punto xi (límite inferior): ')) xs = float(input('Ingrese el valor del punto xs (límite superior): ')) es = float(input('Ingrese el error estimado: ')) def funcion(x): return math.exp(x) - 3 * x if funcion(xi) * funcion(xs) > 0: print('Elegir otro intervalo, no contiene una raíz o contiene un número par de raíces') else: print('El intervalo [' + str(xi) + ', ' + str(xs) + '] contiene por lo menos una raíz') ea = 1 i = 0 xr = xi encontrar_raiz= False while ea > es and not encontrar_raiz: xr_prev = xr xr = xs - (funcion(xs) * (xi - xs)) / (funcion(xi) - funcion(xs)) if funcion(xr) == 0: # Si xr es la raíz exacta encontrar_raiz=True elif funcion(xi) * funcion(xr) < 0: # La raíz está en el intervalo [xi, xr] xs = xr else: # La raíz está en el intervalo [xr, xs] xi = xr # Calcular el error aproximado relativo si no es la primera iteración if i > 0: ea = abs((xr - xr_prev) / xr) * 100 i += 1 print('xr: ', xr) print('Error aproximado: ', ea) print('Número de iteraciones: ', i) #Metodo de Newton Raphson import math xi = float(input('Ingrese el valor del punto inicial xi: ')) es = float(input('Ingrese el error estimado: ')) def funcion(x): return math.exp(x) - 3 * x def derivadaf(x): return math.exp(x) - 3 ea = 1 i = 0 xr = xi while funcion(xr) != 0 and ea > es: xra = xr xr = xr - funcion(xr) / derivadaf(xr) i += 1 if i > 1: ea = abs((xr - xra) / xr) * 100 print('xr: ', xr) print('Error aproximado: ', ea) print('Número de iteraciones: ', i) #Metodo de la Secante import math xi = float(input('Ingrese el valor del primer punto xi: ')) xs = float(input('Ingrese el valor del segundo punto xs: ')) es = float(input('Ingrese el error estimado: ')) def funcion(x): return math.exp(x) - 3 * x ea = 1 i = 0 xr = xi while ea > es: xra = xr xr = xs - (funcion(xs) * (xi - xs)) / (funcion(xi) - funcion(xs)) i += 1 if i > 1: ea = abs((xr - xra) / xr) * 100 if funcion(xi) * funcion(xr) < 0: xs = xr else: xi = xr print('xr: ', xr) print('Error aproximado: ', ea) print('Número de iteraciones: ', i)