VMATHLAB / app.py
VIATEUR-AI's picture
import streamlit as st import numpy as np import sympy as sp import matplotlib.pyplot as plt from sympy.plotting import plot from sympy import symbols, sin, cos, tan st.set_page_config(page_title="VMathLab Ultimate", layout="wide") st.title("VMathLab Ultimate 2.0: Complete Interactive Math Lab") # Sidebar: Module selection module = st.sidebar.selectbox("Hitamo Module:", [ "Algebra", "Calculus", "Trigonometry", "Linear Algebra", "Statistics", "Differential Equations", "Graphing", "Number Theory" ]) x = symbols('x') # --------------------- Algebra --------------------- if module == "Algebra": st.header("Algebra Module") eq_input = st.text_input("Shyiramo equation (urugero: x**2 - 5*x + 6):") if eq_input: try: expr = sp.sympify(eq_input) solutions = sp.solve(expr, x) st.write(f"Solutions: {solutions}") except: st.error("Error: Enter a valid algebraic expression.") # --------------------- Calculus --------------------- elif module == "Calculus": st.header("Calculus Module") func_input = st.text_input("Shyiramo function (urugero: x**3 - 2*x + 1):") if func_input: try: func = sp.sympify(func_input) st.write(f"Derivative: {sp.diff(func, x)}") st.write(f"Integral: {sp.integrate(func, x)} + C") except: st.error("Error: Enter a valid function.") # --------------------- Trigonometry --------------------- elif module == "Trigonometry": st.header("Trigonometry Module") trig_func = st.selectbox("Hitamo function:", ["sin(x)", "cos(x)", "tan(x)"]) x_vals = np.linspace(-2*np.pi, 2*np.pi, 400) if trig_func == "sin(x)": y_vals = np.sin(x_vals) elif trig_func == "cos(x)": y_vals = np.cos(x_vals) else: y_vals = np.tan(x_vals) fig, ax = plt.subplots() ax.plot(x_vals, y_vals, label=trig_func) ax.set_title(f"{trig_func} plot") ax.grid(True) st.pyplot(fig) # --------------------- Linear Algebra --------------------- elif module == "Linear Algebra": st.header("Linear Algebra Module") st.write("Matrix Calculator") matrix_input = st.text_area("Shyiramo matrix (urugero: [[1,2],[3,4]]):") if matrix_input: try: mat = np.array(eval(matrix_input)) st.write("Determinant:", np.linalg.det(mat)) st.write("Inverse (if exists):", np.linalg.inv(mat)) except: st.error("Invalid matrix input.") # --------------------- Statistics --------------------- elif module == "Statistics": st.header("Statistics Module") data_input = st.text_area("Shyiramo data (urugero: 1,2,3,4,5):") if data_input: try: data = np.array([float(i) for i in data_input.split(",")]) st.write("Mean:", np.mean(data)) st.write("Median:", np.median(data)) st.write("Variance:", np.var(data)) except: st.error("Invalid data input.") # --------------------- Differential Equations --------------------- elif module == "Differential Equations": st.header("Differential Equations Module") de_input = st.text_input("Shyiramo DE (urugero: f(x).diff(x) - f(x) = 0):") f = sp.Function('f') if de_input: try: de = eval(de_input) sol = sp.dsolve(de) st.write("Solution:", sol) except: st.error("Invalid differential equation.") # --------------------- Graphing --------------------- elif module == "Graphing": st.header("Graphing Module") func_input = st.text_input("Shyiramo function y(x):") x_min = st.number_input("X min", value=-10.0) x_max = st.number_input("X max", value=10.0) color = st.color_picker("Graph Color", "#FF0000") if func_input: try: x_vals = np.linspace(x_min, x_max, 400) f = sp.lambdify(x, sp.sympify(func_input), "numpy") y_vals = f(x_vals) fig, ax = plt.subplots() ax.plot(x_vals, y_vals, color=color, label=func_input) ax.axhline(0, color='black', linewidth=0.7) ax.axvline(0, color='black', linewidth=0.7) ax.grid(True) ax.legend() st.pyplot(fig) except: st.error("Enter a valid function.") # --------------------- Number Theory --------------------- elif module == "Number Theory": st.header("Number Theory Module") num = st.number_input("Shyiramo integer:", step=1) if num: try: def is_prime(n): if n < 2: return False for i in range(2,int(n**0.5)+1): if n % i == 0: return False return True st.write(f"Prime: {is_prime(num)}") st.write("Factors:", [i for i in range(1,num+1) if num % i == 0]) except: st.error("Invalid input.")
62a0351 verified
import streamlit as st
import numpy as np
import sympy as sp
import matplotlib.pyplot as plt
from sympy.plotting import plot
from sympy import symbols, sin, cos, tan
st.set_page_config(page_title="VMathLab Ultimate", layout="wide")
st.title("VMathLab Ultimate 2.0: Complete Interactive Math Lab")
# Sidebar: Module selection
module = st.sidebar.selectbox("Hitamo Module:", [
"Algebra", "Calculus", "Trigonometry",
"Linear Algebra", "Statistics", "Differential Equations", "Graphing", "Number Theory"
])
x = symbols('x')
# --------------------- Algebra ---------------------
if module == "Algebra":
st.header("Algebra Module")
eq_input = st.text_input("Shyiramo equation (urugero: x**2 - 5*x + 6):")
if eq_input:
try:
expr = sp.sympify(eq_input)
solutions = sp.solve(expr, x)
st.write(f"Solutions: {solutions}")
except:
st.error("Error: Enter a valid algebraic expression.")
# --------------------- Calculus ---------------------
elif module == "Calculus":
st.header("Calculus Module")
func_input = st.text_input("Shyiramo function (urugero: x**3 - 2*x + 1):")
if func_input:
try:
func = sp.sympify(func_input)
st.write(f"Derivative: {sp.diff(func, x)}")
st.write(f"Integral: {sp.integrate(func, x)} + C")
except:
st.error("Error: Enter a valid function.")
# --------------------- Trigonometry ---------------------
elif module == "Trigonometry":
st.header("Trigonometry Module")
trig_func = st.selectbox("Hitamo function:", ["sin(x)", "cos(x)", "tan(x)"])
x_vals = np.linspace(-2*np.pi, 2*np.pi, 400)
if trig_func == "sin(x)":
y_vals = np.sin(x_vals)
elif trig_func == "cos(x)":
y_vals = np.cos(x_vals)
else:
y_vals = np.tan(x_vals)
fig, ax = plt.subplots()
ax.plot(x_vals, y_vals, label=trig_func)
ax.set_title(f"{trig_func} plot")
ax.grid(True)
st.pyplot(fig)
# --------------------- Linear Algebra ---------------------
elif module == "Linear Algebra":
st.header("Linear Algebra Module")
st.write("Matrix Calculator")
matrix_input = st.text_area("Shyiramo matrix (urugero: [[1,2],[3,4]]):")
if matrix_input:
try:
mat = np.array(eval(matrix_input))
st.write("Determinant:", np.linalg.det(mat))
st.write("Inverse (if exists):", np.linalg.inv(mat))
except:
st.error("Invalid matrix input.")
# --------------------- Statistics ---------------------
elif module == "Statistics":
st.header("Statistics Module")
data_input = st.text_area("Shyiramo data (urugero: 1,2,3,4,5):")
if data_input:
try:
data = np.array([float(i) for i in data_input.split(",")])
st.write("Mean:", np.mean(data))
st.write("Median:", np.median(data))
st.write("Variance:", np.var(data))
except:
st.error("Invalid data input.")
# --------------------- Differential Equations ---------------------
elif module == "Differential Equations":
st.header("Differential Equations Module")
de_input = st.text_input("Shyiramo DE (urugero: f(x).diff(x) - f(x) = 0):")
f = sp.Function('f')
if de_input:
try:
de = eval(de_input)
sol = sp.dsolve(de)
st.write("Solution:", sol)
except:
st.error("Invalid differential equation.")
# --------------------- Graphing ---------------------
elif module == "Graphing":
st.header("Graphing Module")
func_input = st.text_input("Shyiramo function y(x):")
x_min = st.number_input("X min", value=-10.0)
x_max = st.number_input("X max", value=10.0)
color = st.color_picker("Graph Color", "#FF0000")
if func_input:
try:
x_vals = np.linspace(x_min, x_max, 400)
f = sp.lambdify(x, sp.sympify(func_input), "numpy")
y_vals = f(x_vals)
fig, ax = plt.subplots()
ax.plot(x_vals, y_vals, color=color, label=func_input)
ax.axhline(0, color='black', linewidth=0.7)
ax.axvline(0, color='black', linewidth=0.7)
ax.grid(True)
ax.legend()
st.pyplot(fig)
except:
st.error("Enter a valid function.")
# --------------------- Number Theory ---------------------
elif module == "Number Theory":
st.header("Number Theory Module")
num = st.number_input("Shyiramo integer:", step=1)
if num:
try:
def is_prime(n):
if n < 2: return False
for i in range(2,int(n**0.5)+1):
if n % i == 0: return False
return True
st.write(f"Prime: {is_prime(num)}")
st.write("Factors:", [i for i in range(1,num+1) if num % i == 0])
except:
st.error("Invalid input.")