Spaces:
Sleeping
Sleeping
import streamlit as st | |
from sympy import symbols, Eq, solve, log, sin, cos, tan, diff, integrate | |
from sympy.parsing.sympy_parser import parse_expr | |
from transformers import pipeline | |
# Initialize the Hugging Face model for math question answering | |
math_model = pipeline("text2text-generation", model="google/t5-small-ssm-nq") | |
def solve_math_problem(problem): | |
try: | |
# Attempt to parse and solve mathematical expressions | |
expr = parse_expr(problem) | |
# Solve algebraic equations or expressions | |
if isinstance(expr, Eq): | |
return solve(expr) | |
else: | |
return expr | |
except: | |
# Handle complex cases or when sympy can't solve the problem | |
result = math_model(problem) | |
return result[0]['generated_text'] | |
def solve_trigonometric(problem): | |
# Process trigonometric expressions | |
try: | |
if 'sin' in problem or 'cos' in problem or 'tan' in problem: | |
expr = parse_expr(problem) | |
return expr | |
else: | |
return "This doesn't seem to be a trigonometric expression." | |
except: | |
return "Unable to solve the trigonometric expression." | |
def solve_de_morgan_law(problem): | |
# Example function to handle de Morgan's law | |
if "not" in problem and "or" in problem or "and" in problem: | |
# This is a basic check, for detailed handling we can implement a parser | |
return f"De Morgan's transformation for: {problem}." | |
return "No de Morgan's law expression found." | |
# Streamlit UI | |
st.title("Math Solver App") | |
st.write("This app can solve mathematical problems like algebra, trigonometry, and logic.") | |
question = st.text_input("Enter your math question here:") | |
if question: | |
if "log" in question: | |
# Handle logarithmic expressions | |
result = solve_math_problem(question) | |
st.write(f"Logarithmic result: {result}") | |
elif "sin" in question or "cos" in question or "tan" in question: | |
result = solve_trigonometric(question) | |
st.write(f"Trigonometric result: {result}") | |
elif "not" in question or "and" in question or "or" in question: | |
result = solve_de_morgan_law(question) | |
st.write(result) | |
else: | |
# For algebraic or other mathematical expressions | |
result = solve_math_problem(question) | |
st.write(f"Result: {result}") | |