mirror of
https://github.com/Sosokker/Calculator-for-Matrix-and-Algebra.git
synced 2025-12-18 12:44:05 +01:00
Add equation process file
This commit is contained in:
parent
2708cb8867
commit
3680a777ad
99
nessesary/equation/processing.py
Normal file
99
nessesary/equation/processing.py
Normal file
@ -0,0 +1,99 @@
|
||||
from nessesary.polynomial import Polynomial
|
||||
from nessesary.parser.parser import is_letter, is_op
|
||||
|
||||
def change_side(equa:str):
|
||||
"""
|
||||
Change all left side expression of = sign
|
||||
to right side.
|
||||
>>> change_side("x+2-x^2 = 32-x^3")
|
||||
'x+2-x^2-32+x^3=0'
|
||||
"""
|
||||
temp = ''
|
||||
for i in equa:
|
||||
if i == " ":
|
||||
temp += ""
|
||||
else:
|
||||
temp += i
|
||||
|
||||
equa = temp
|
||||
|
||||
llist = equa.split("=")
|
||||
left_side, right_side = llist[0], llist[1]
|
||||
|
||||
temp = ''
|
||||
if (right_side[0] != "-") or (right_side[0] != "+"):
|
||||
temp += '+'
|
||||
temp += right_side
|
||||
right_side = temp
|
||||
for i in right_side:
|
||||
if i == "+":
|
||||
left_side += "-"
|
||||
elif i == "-":
|
||||
left_side += "+"
|
||||
else:
|
||||
left_side += i
|
||||
return left_side
|
||||
|
||||
def simplify(expr:str):
|
||||
"""
|
||||
Use to_str() method of polynomial.
|
||||
to sum and sub all coefficient.
|
||||
"""
|
||||
poly = Polynomial(expr)
|
||||
try:
|
||||
result = poly.to_str()
|
||||
return result
|
||||
except:
|
||||
raise ValueError
|
||||
|
||||
def solver(expr:str):
|
||||
"""
|
||||
Solve expression that using polynomial solve().
|
||||
"""
|
||||
poly = Polynomial(expr)
|
||||
try:
|
||||
result = poly.solve()
|
||||
return result
|
||||
except:
|
||||
raise ValueError
|
||||
|
||||
def poly_expand(expr:str):
|
||||
"""
|
||||
Add Polynomial Text to all element that
|
||||
can make polynomial.
|
||||
>>> poly_expand("(3x+2)^3+4x+5-2+(5x^2)^3")
|
||||
'Polynomial("3x+2")**3+Polynomial("4x")+Polynomial("5x^2")**3'
|
||||
"""
|
||||
i = 0
|
||||
result = ""
|
||||
found = False
|
||||
added = False
|
||||
while i < len(expr):
|
||||
char = expr[i]
|
||||
if char == "(":
|
||||
result += "Polynomial("
|
||||
i += 1
|
||||
found = True
|
||||
else:
|
||||
if not found:
|
||||
if added and is_op(char):
|
||||
result += f"){char}"
|
||||
|
||||
added = False
|
||||
if is_op(char) and char != "^":
|
||||
result += f"{char}Polynomial("
|
||||
i += 1
|
||||
added = True
|
||||
continue
|
||||
result += char
|
||||
i += 1
|
||||
|
||||
if char == ")":
|
||||
found = False
|
||||
|
||||
result = result.replace("++", "+").replace("--","-")
|
||||
result = result.replace("^^", "^")
|
||||
result = result.replace("))", ")")
|
||||
result = result.replace("^", "**")
|
||||
result = result.replace("Polynomial(Polynomial(", "Polynomial(")
|
||||
return result
|
||||
Loading…
Reference in New Issue
Block a user