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).