-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFunctions2.py
More file actions
87 lines (74 loc) · 5.03 KB
/
Functions2.py
File metadata and controls
87 lines (74 loc) · 5.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# Hay que instalar pip install antlr4-python3-runtime==4.10
# pip install sympy
# Aquí están los paquetes que deben ser importados
import antlr4
from sympy import *
from sympy.parsing.latex import parse_latex
# Aqui comienzo a definir la función de suma
# Esta funcion recibe como parámetro la ecuacion y el factor en latex
# Y da como resultado un string con el latex de la nueva ecuacion
#Muy importante, los inputs deben venir con una r al inicio, como en
# r"\frac {1 + \sqrt {\a}} {\b} = x^2"
# Esto,para que python pueda leer correctamente los backlashes
def Sumar(ecuacion, factor):
parts = ecuacion.split("=") # Divide la ecuacion en dos partes, dividiendo en el igual
fac = parse_expr(factor) # convierte de latex a formato Sympy
eqLeft = parse_expr(parts[0]) + fac # Se suma al lado izquierdo el factor
eqRight = parse_expr(parts[1]) + fac # Se suma al lado derecho el factor
eq = str(Eq(eqLeft, eqRight)) # Se combinan los dos lados en una nueva ecuación, en formato latex
eqLatex = latex(Eq(eqLeft, eqRight)) # Se combinan los dos lados en una nueva ecuación, en formato latex
return {'sympy' : eq , 'latex' : eqLatex } #Se devuelve la ecuacion en ambos formatos
def Restar(ecuacion, factor):
parts = ecuacion.split("=") # Divide la ecuacion en dos partes, dividiendo en el igual
fac = parse_expr(factor) # convierte de latex a formato Sympy
eqLeft = parse_expr(parts[0]) - fac # Se suma al lado izquierdo el factor
eqRight = parse_expr(parts[1]) - fac # Se suma al lado derecho el factor
eq = Eq(eqLeft, eqRight) # Se combinan los dos lados en una nueva ecuación, en formato latex
return str(eq) #Se devuelve la ecuacion en latex
def Multiplicar(ecuacion, factor):
parts = ecuacion.split("=") # Divide la ecuacion en dos partes, dividiendo en el igual
fac = parse_expr(factor) # convierte de latex a formato Sympy
eqLeft = parse_expr(parts[0]) * fac # Se suma al lado izquierdo el factor
eqRight = parse_expr(parts[1]) * fac # Se suma al lado derecho el factor
eq = Eq(eqLeft, eqRight) # Se combinan los dos lados en una nueva ecuación, en formato latex
return str(eq) #Se devuelve la ecuacion en latex
def Dividir(ecuacion, factor):
parts = ecuacion.split("=") # Divide la ecuacion en dos partes, dividiendo en el igual
fac = parse_expr(factor) # convierte de latex a formato Sympy
eqLeft = parse_expr(parts[0]) / fac # Se suma al lado izquierdo el factor
eqRight = pparse_expr(arts[1]) / fac # Se suma al lado derecho el factor
eq = Eq(eqLeft, eqRight) # Se combinan los dos lados en una nueva ecuación, en formato latex
return str(eq) #Se devuelve la ecuacion en latex
def Potencia(ecuacion, factor):
parts = ecuacion.split("=") # Divide la ecuacion en dos partes, dividiendo en el igual
fac = parse_expr(factor) # convierte de latex a formato Sympy
eqLeft = powdenest(Pow(parse_expr(parts[0]), fac ),
force=True) # Se suma al lado izquierdo el factor
eqRight = powdenest(Pow(parse_expr(parts[1]), fac ),
force=True)# Se suma al lado derecho el factor
eq = Eq(eqLeft, eqRight) # Se combinan los dos lados en una nueva ecuación, en formato latex
return str(eq) #Se devuelve la ecuacion en latex
def Raiz(ecuacion, factor):
parts = ecuacion.split("=") # Divide la ecuacion en dos partes, dividiendo en el igual
fac = parse_expr(factor) # convierte de latex a formato Sympy
eqLeft = powdenest(root(parse_expr(parts[0]), fac ),
force=True) # Se suma al lado izquierdo el factor
eqRight = powdenest(root(parse_expr(parts[1]), fac ),
force=True)# Se suma al lado derecho el factor
eq = Eq(eqLeft, eqRight) # Se combinan los dos lados en una nueva ecuación, en formato latex
return str(eq) #Se devuelve la ecuacion en latex
def Simplificar(ecuacion, factor):
parts = ecuacion.split("=") # Divide la ecuacion en dos partes, dividiendo en el igual
eqLeft = powdenest(simplify(parse_expr(parts[0]), inverse=True), force=True) # Se suma al lado izquierdo el factor
eqRight = powdenest(simplify(parse_expr(parts[1]), inverse=True), force=True) # Se suma al lado derecho el factor
eq = Eq(eqLeft, eqRight) # Se combinan los dos lados en una nueva ecuación, en formato latex
return str(eq) #Se devuelve la ecuacion en latex
def Expandir(ecuacion, factor):
parts = ecuacion.split("=") # Divide la ecuacion en dos partes, dividiendo en el igual
eqLeft = powdenest(expand(parse_expr(parts[0]), inverse=True), force=True) # Se suma al lado izquierdo el factor
eqRight = powdenest(expand(parse_expr(parts[1]), inverse=True), force=True) # Se suma al lado derecho el factor
eq = Eq(eqLeft, eqRight) # Se combinan los dos lados en una nueva ecuación, en formato latex
return str(eq) #Se devuelve la ecuacion en latex
def getLatex(ecuacion, factor): # Función cuyo único propósito es crear el latex
eqLatex = latex(parse_expr(ecuacion))
return(eqLatex)