求导(functions/derivative.py)
functions/derivative.py 提供显函数与隐函数求导。两者均返回经 radsimp 化简后的 SymPy 表达式,并非 LaTeX 字符串。输入经 core.sympify.sympify 解析;解析失败时 sympify 返回字符串 "不规范的表达式输入",本模块不捕获该异常(通常由 UI 层处理)。
derivative — 显函数求导
作用:求显函数 f 对变量 v 的 n 阶导数;若给定 x,则把 x 代入导函数得到数值表达式。
def derivative(f, v, n, x, fs):
...
| 参数 | 类型 | 含义 |
|---|---|---|
f |
str |
原函数表达式,符合 Python/SymPy 语法,如 "x**3 + sin(x)" |
v |
str |
求导变量符号,如 "x" |
n |
str |
求导阶数,整数形式的字符串,如 "1"、"2" |
x |
str |
自变量代入值;为空字符串 "" 或 None 表示不代入,保留导函数 |
fs |
dict |
函数字典,键为函数名,值为 [名称, 函数体, 定义域, 自变量] |
返回:radsimp(diff(sympify(f), sympify(v), int(sympify(n)), sympify(x))) 所得的 SymPy 表达式(代入 x 后为数值表达式)。
Example
python
derivative("x**3", "x", "1", "", {}) # -> 3*x**2
derivative("x**3", "x", "1", "2", {}) # -> 12 (代入 x=2)
yinhanshu_derivative — 隐函数求导
作用:基于 sympy.idiff 求隐函数 f(x, y)=0 对 x 的 n 阶导数。
def yinhanshu_derivative(f, v1, v2, n, x, fs):
...
| 参数 | 类型 | 含义 |
|---|---|---|
f |
str |
隐函数表达式,约定其值等于 0(形如 F(x, y) = 0),如 "x**2 + y**2 - 1" |
v1 |
str |
自变量符号,如 "x" |
v2 |
str |
因变量符号,如 "y" |
n |
str |
求导阶数,整数形式的字符串 |
x |
str |
自变量代入值;"" 或 None 表示不代入 |
fs |
dict |
函数字典 |
返回:radsimp(idiff(...)) 所得的 SymPy 表达式。
Example
圆 x**2 + y**2 - 1 = 0 对 x 求导:
```python
yinhanshu_derivative("x2+y2-1", "x", "y", "1", "", {})
-> -x/y
```
Note
x 是自变量具体取值(代入),不是第二个自变量;如需对多个变量求偏导,请多次调用或对结果再求导。