方程与不等式(functions/solvers.py)
functions/solvers.py 提供方程、微分方程组、不等式(组)与解三角形的统一解算。
Warning
这里 eq / rel / eqs / rels 不是字符串,而是 SymPy 已解析的对象:方程传 sympy.Eq,不等式传 sympy 关系对象(<、>、<=、>= 等),方程组/不等式组传列表。字符串需先经 core.sympify.sympify 解析、再构造成 Eq/Relational 后传入(UI 自动完成该步骤)。
solve_fangcheng — 解一元方程
作用:求解一元方程并返回解集。
def solve_fangcheng(eq, zhuyuan, domain, fs):
...
| 参数 | 类型 | 含义 |
|---|---|---|
eq |
sympy.Equality |
方程等式,如 Eq(sympify("x**2-1"), 0) |
zhuyuan |
str |
主元符号名,如 "x" |
domain |
str |
主元取值范围,经 sympify 解析,如 "Reals"、"Interval(0,1)" |
fs |
dict |
函数字典 |
返回:SymPy 解集(FiniteSet 等,由 solveset 计算)。
solve_weifenfangcheng — 解微分方程
作用:求解常微分方程。
def solve_weifenfangcheng(eq, zhuyuan, fs):
...
| 参数 | 类型 | 含义 |
|---|---|---|
eq |
sympy.Equality |
微分方程等式,如 Eq(f(x).diff(x), f(x)) |
zhuyuan |
str |
主元符号,默认 "f(x)" |
fs |
dict |
函数字典 |
返回:dsolve 结果(SymPy Equality)。
solve_fangchengzu — 解方程组
作用:求解多元方程组。
def solve_fangchengzu(eqs, zhuyuan, fs):
...
| 参数 | 类型 | 含义 |
|---|---|---|
eqs |
list[sympy.Equality] |
方程等式列表 |
zhuyuan |
list[sympy.Symbol] |
主元符号列表,如 [x, y] |
fs |
dict |
函数字典 |
返回:解列表,形如 [[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 — 解一元不等式
作用:求解一元不等式并返回解集。
def solve_budengshi(rel, zhuyuan, domain, fs):
...
| 参数 | 类型 | 含义 |
|---|---|---|
rel |
sympy.Relational |
不等式关系对象,如 sympify("x**2-1") < 0 |
zhuyuan |
str |
主元符号名 |
domain |
str |
取值范围(经 sympify) |
fs |
dict |
函数字典 |
返回:SymPy 解集(由 solveset 计算)。
solve_budengshizu — 解不等式组
作用:求解一元不等式组(共用同一主元)的交集。
def solve_budengshizu(rels, zhuyuan, fs):
...
| 参数 | 类型 | 含义 |
|---|---|---|
rels |
list[sympy.Relational] |
不等式关系对象列表 |
zhuyuan |
sympy.Symbol |
单个主元符号 |
fs |
dict |
函数字典 |
返回:解集(由 solve(...).as_set() 计算)。
solve_sanjiaoxing — 解三角形
作用:已知三角形的部分角与边,解算其余角与边。
def solve_sanjiaoxing(angles, sides, fs):
...
| 参数 | 类型 | 含义 |
|---|---|---|
angles |
dict |
已知角,键为大写字母 "A"/"B"/"C",值为 SymPy 表达式 |
sides |
dict |
已知边,键为小写字母 "a"/"b"/"c",值为 SymPy 表达式 |
fs |
dict |
函数字典 |
返回:解的列表,每个解为 [角度字典, 边长字典];无解时返回 [] 或字符串 "无解"。
Note
返回值均经过 _radsimp_safe 安全化简(自动处理 Eq / 字典等结构)。