跳转至

方程与不等式(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 / 字典等结构)。