Skip to content

Equations and Inequalities (functions/solvers.py)

functions/solvers.py provides unified solving for equations, differential equations, inequalities (systems), and triangles.

Warning

Here eq / rel / eqs / rels are not strings but already-parsed SymPy objects: pass equations as sympy.Eq, inequalities as sympy relational objects (<, >, <=, >=), and systems as lists. Raw strings must first be parsed via core.sympify.sympify and wrapped into Eq / Relational before being passed (the UI does this automatically).

solve_fangcheng — solve a one-variable equation

Purpose: solve a one-variable equation and return the solution set.

def solve_fangcheng(eq, zhuyuan, domain, fs):
    ...
Param Type Meaning
eq sympy.Equality equation, e.g. Eq(sympify("x**2-1"), 0)
zhuyuan str main variable name, e.g. "x"
domain str domain for the variable (sympified), e.g. "Reals", "Interval(0,1)"
fs dict function dictionary

Returns: a sympy solution set (FiniteSet etc., via solveset).

solve_weifenfangcheng — solve a differential equation

Purpose: solve an ordinary differential equation.

def solve_weifenfangcheng(eq, zhuyuan, fs):
    ...
Param Type Meaning
eq sympy.Equality differential equation, e.g. Eq(f(x).diff(x), f(x))
zhuyuan str main variable, default "f(x)"
fs dict function dictionary

Returns: the dsolve result (a SymPy Equality).

solve_fangchengzu — solve a system of equations

Purpose: solve a system of equations in several variables.

def solve_fangchengzu(eqs, zhuyuan, fs):
    ...
Param Type Meaning
eqs list[sympy.Equality] list of equation equalities
zhuyuan list[sympy.Symbol] list of main variable symbols, e.g. [x, y]
fs dict function dictionary

Returns: a list of solutions, e.g. [[x==a, y==b], ...].

Example

```python from sympy import Eq, symbols from core.sympify import sympify from functions.solvers import solve_fangcheng, solve_fangchengzu

solve_fangcheng(Eq(sympify("x**2-1"), 0), "x", "Reals", {})

->

x, y = symbols("x y") solve_fangchengzu([Eq(x + y, 3), Eq(x - y, 1)], [x, y], {})

-> [[x == 2, y == 1]]

```

solve_budengshi — solve a one-variable inequality

Purpose: solve a one-variable inequality and return the solution set.

def solve_budengshi(rel, zhuyuan, domain, fs):
    ...
Param Type Meaning
rel sympy.Relational relational object, e.g. sympify("x**2-1") < 0
zhuyuan str main variable name
domain str domain (sympified)
fs dict function dictionary

Returns: a sympy solution set (via solveset).

solve_budengshizu — solve a system of inequalities

Purpose: solve a system of one-variable inequalities (sharing one main variable) and return the intersection.

def solve_budengshizu(rels, zhuyuan, fs):
    ...
Param Type Meaning
rels list[sympy.Relational] list of relational objects
zhuyuan sympy.Symbol single main variable symbol
fs dict function dictionary

Returns: a solution set (via solve(...).as_set()).

solve_sanjiaoxing — solve a triangle

Purpose: given some angles and sides of a triangle, compute the remaining angles and sides.

def solve_sanjiaoxing(angles, sides, fs):
    ...
Param Type Meaning
angles dict known angles, keys uppercase "A"/"B"/"C", values SymPy expressions
sides dict known sides, keys lowercase "a"/"b"/"c", values SymPy expressions
fs dict function dictionary

Returns: a list of solutions, each [angles_dict, sides_dict]; [] or "无解" when no solution.

Note

All return values are safely simplified via _radsimp_safe (handles Eq / dict structures automatically).