Documentos de Académico
Documentos de Profesional
Documentos de Cultura
import sympy
import numpy as np
import matplotlib.pyplot as plt
from math import *
import math
import sys
"""
TALLER MARVIN MOLINA 2023-1
"""
def decimal_binario(deci):
binario = ' '
bin(int(num))
binarios = int(bin(deci)[2:])
return binarios
def binario_decimal(bina):
deci = int(str(bina), 2)
return deci
def parte_decimal_binaria(deci):
binarioDecimal = ''
deci = float("0." + str(deci))
for i in range(10):
deci = deci * 2
if (str(deci)[0] == "0"):
binarioDecimal = binarioDecimal + "0"
elif (str((deci)[0] == "1")):
deci = deci - 1
binarioDecimal = binarioDecimal + "1"
return binarioDecimal
def partes_enteras(num):
num_entero = ""
num_string = str(num)
punto_posicion = len(num_string)
for i in range(len(num_string)):
if (num_string[i] != "."):
num_entero += num_string[i]
elif (num_string[i] == "."):
punto_posicion = i
break
return int(num_entero), punto_posicion
def separacion_numeros(num):
decimales = 0
enteros, punto_posicion = partes_enteras(num)
if (punto_posicion != len(str(num))):
decimales = partes_decimales(num, punto_posicion)
return enteros, decimales
def extracion_signo(num):
sig = "0"
if (num[0] == "0"):
sig = "1"
num[0] = ""
return sig
def calculo_exponentes_maximos(exp):
bits_exp = len(str(exp))
max_exp = 2 ** bits_exp
return max_exp
def Redondeo_de_pi():
print("El valor original de PI es (", math.pi, ")")
print("Se redondeo PI a 4 cifras y su resultado es (",
round(math.pi, 4), ")")
def Redondeo_de_LogE():
print("El valor base de logaritmo natural es ", math.log(math.e))
print("Se redondeo logaritmo natural a cuatro cifras y su
resultado es (",
round(math.log(math.e, 4)), ")")
op_e = int(input("""¿Deseas hallar el redondeo de otro numero?
1. si
2. no
Digite la opcion que desea """))
while (op_e != 2):
if (op_e == 1):
num = float(input("ingrese el número:"))
print("el numero ingresado es", num,
" y se redondeo a 4 cifras con ", round(num, 4))
break
else:
print("Fin del programa")
def Redondeo_raiz_cuadrada():
print("El valor base de la raiz cuadrada es ", math.sqrt(2))
print("Se redondeo la raiz cuadrada a cuatro cifras ( ",
round(math.sqrt(2), 4), " )")
op_rC = int(input("""¿Deseas hallar el redondeo de otro numero?
1. si
2. no
Digite la opcion que desea """))
while (op_rC != 2):
if (op_rC == 1):
num = float(input("ingrese el número:"))
print("el numero ingresado es", num,
" y se redonde a 4 cifras con ",
round(math.sqrt(num), 4))
break
else:
print("Fin del programa")
def Redondeo_raiz_cubica():
resultadoUno = np.cbrt(7)
print("El número redondeado a cuatro cifras es (",
round(resultadoUno, 4), " )")
op_rCubica = int(input("""¿Deseas hallar el redondeo de otro
numero?
1. si
2. no
Digite la opcion que desea """))
while (op_rCubica != 2):
if (op_rCubica == 1):
num = float(input("ingrese el número:"))
resultadoUno = np.cbrt(num)
print("el numero ingresado es", num,
" y se redonde a 4 cifras con ",
round(resultadoUno, 4))
break
else:
print("Fin del programa")
Opciones = """
MENU METODOS NUMERICOS
------------------------
1-Resolver Polinomio
2-Metodo Langrage
3-Metodo Runge-Kutta
4-Biseccion Polinomica
5-Redondeo de logaritmo natural
6-Redondeo de pi
7-Redondeo raiz cuadrada de 2
8-Redondeo raiz cubica de 7
9-Convertir numero de decimal a binario
10-Convertir numero de binario a decimal
11-Calcular el valor de epsilon
12-Metodo Gaus-Jordan
13-Metodo Newthon-Rhapson
14-Metedo Gauss-Seidel
15-Metodo LU
------------------------
"""
show = True;
print()
# Leer intervalos
a = float(input("Introduce el inicio del intervalo: a = "))
b = float(input("Introduce el fin del intervalo: b = "))
p = Polinomio(coeficientes, grado)
long_arc = 0.0
subintervalos = 0
if regla == 1:
long_arc, subintervalos = p.long_arc_trapecio(a, b,
tolerancia)
elif regla == 2:
long_arc, subintervalos = p.long_arc_simpson13(a, b,
tolerancia)
elif op == 2:
# Cantidad de puntos
points = len(x)
lj = []
for k in range(points):
lk = np.prod([algoritmo(i, k) for i in range(points)])
lj.append(lk)
# Lagrange
pol = sum(y * lj)
x_test = np.linspace(min(x), max(x), num_puntos)
y_pol = [pol.subs(x_sim, i) for i in x_test]
# Mostrando lagrafica
plt.plot(x_test, y_pol)
plt.scatter(x, y)
plt.legend(['Lagrange', 'Datos'], loc='lower right')
plt.show()
elif op == 3:
b = params["b"]
c = params["c"]
d = params["d"]
# RK4 Method
nx = x0.size
# filling with zeros nx, nt)
x = np.zeros((nx, nt))
x[:, 0] = x0
dx = (k1 + 2 * k2 + 2 * k3 + k4) / 6
x[:, i + 1] = x[:, i] + dx
return (x, t)
# Definimg Params
params = {"a": 2 * 1.2, "b": 2 * 0.6, "c": 2 * 0.8, "d": 2 * 0.3}
# x_initialization
x0 = np.array([2, 1])
t0 = 0
tf = 30
h = 0.1
x, t = rungeKutta4(f, x0, t0, tf, h)
# Plot Results
plt.subplot(1, 2, 1)
plt.plot(t, x[0, :], "r", label="Preyers")
plt.plot(t, x[1, :], "b", label="Predators")
plt.xlabel("Time (t)")
plt.grid()
plt.legend()
plt.subplot(1, 2, 2)
plt.plot(x[0, :], x[1, :])
plt.xlabel("Preys")
plt.ylabel("Predators")
plt.grid()
plt.show()
elif op == 4:
def pol(x):
return -0.42 * x ** 2 + 2.2 * x + 4.7
def trig(x):
return x * cos(x - 1) - sin(x)
i = 1
while i <= n_max:
p = inter + (fin_inter - inter) / 2
print("i = {0:<2}, p = {1: .12f}".format(i, p))
if abs(fun(p)) <= 1e-15 or (fin_inter - inter) / 2 < e:
return p
i = i + 1
if fun(inter) * fun(p) > 0:
inter = p
else:
fin_inter = p
print("Se acabaron las iteraciones: Error!")
return None
print("Biseccion polinomica(x):")
bisec(pol, 1, 2, 1e-8, 100)
"""pol(x), inter=1, fin_inter=2, e=10**-8, N_0=100"""
elif op == 5:
elif op == 6:
elif op == 7:
print("El valor base de la raiz cuadrada es ", math.sqrt(2))
print("Se redondeo la raiz cuadrada a cuatro cifras ( ",
round(math.sqrt(2), 4), " )")
op_rC = int(input("""¿Deseas hallar el redondeo de otro
numero?
1. si
2. no
Digite la opcion que desea """))
while (op_rC != 2):
if (op_rC == 1):
num = float(input("ingrese el número:"))
print("el numero ingresado es", num,
" y se redonde a 4 cifras con ",
round(math.sqrt(num), 4))
break
else:
print("Fin del programa")
elif op == 8:
resultadoUno = np.cbrt(7)
print("El número redondeado a cuatro cifras es (",
round(resultadoUno, 4), " )")
op_rCubica = int(input("""¿Deseas hallar el redondeo de otro
numero?
1. si
2. no
Digite la opcion que desea """))
while (op_rCubica != 2):
if (op_rCubica == 1):
num = float(input("ingrese el número:"))
resultadoUno = np.cbrt(num)
print("el numero ingresado es", num,
" y se redonde a 4 cifras con ",
round(resultadoUno, 4))
break
else:
elif op == 9:
elif op == 10:
print("ingrese un numero")
num2 = float(input())
ent, dec = separacion_numeros(num2)
num_dec = str(binario_decimal(ent)) + \
"." + parte_decimal_binaria(dec)
# numero_decimal = str(binario_decimal(num_dec))
print("el numero de decimal a binario", num_dec)
elif op == 11:
epsilon()
elif op == 12:
def main():
a = np.zeros((n, n + 1))
x = np.zeros(n)
for i in range(n):
if a[i][i] == 0.0:
sys.exit('Division por 0 detectada ')
for j in range(n):
if i != j:
ratio = a[j][i] / a[i][i]
for i in range(n):
x[i] = a[i][n] / a[i][i]
main()
elif op == 13:
if _name_ == "_main_":
v1 = float(input("Asigne valor a la 1er variable: "))
v2 = float(input("Asigne valor a la 2da variable: "))
def funcion(x):
value = x ** 2 - 2
return value
def derivada(x):
return 2 * x # The derivative of the main function
x1 = 0
if abs(x0 - x1) <= tol and abs((x0 - x1) / x0) <= tol:
return x0
print("")
print("k\t x0\t\t funcion(x0)")
print("")
k = 1
x0 = x1
k = k + 1
plt.plot(x0, funcion(x0), 'or')
plt.plot(u, w)
plt.axhline(y=0.0, color='black', linestyle='-')
plt.title('Newton-Raphson Grafica')
plt.xlabel('X')
plt.ylabel('Y')
plt.grid(True)
plt.legend(['Xn'], loc='upper left')
plt.show()