字符串解析(输入标准)
本页是所有文本框输入的共同标准。掌握这些规则,求导、积分、方程、几何等所有功能都能正确解析你的输入。
〇、可视化公式输入(v1.6.4 新增)
除直接打字输入外,点击任意输入框右侧的键盘图标按钮,可打开基于 pyqt5-math-widget 的图形化公式编辑器。通过工具栏选择数学结构、运算符或函数,编辑完成后公式自动转换为 SymPy 表达式并填入输入框。
工具栏分组包括:结构(分式、根号、幂次等)、希腊字母、运算符、函数(sin、cos、log、lim 等)和编辑工具。
一、LaTeX 代码直接输入(v1.6.1 新增)
除标准 Python/SymPy 语法外,还支持直接输入 LaTeX 代码:在表达式前加半角美元符号 $ 作为标识,系统会自动将 LaTeX 转换为 SymPy 表达式。
| 数学含义 | LaTeX 输入 | 等价 SymPy 输入 |
|---|---|---|
| 二分之 x | $\frac{x}{2} |
x/2 |
| x 的平方 | $x^{2} |
x**2 |
| 根号 x | $\sqrt{x} |
sqrt(x) |
| sin(x) | $\sin{x} |
sin(x) |
| 自然对数 ln(x) | $\ln{x} |
log(x) |
| 圆周率 π | $\pi |
pi |
| 无穷大 ∞ | $\infty |
oo |
Warning
必须以 $ 开头且为半角美元符号。不以 $ 开头时,系统按原有 SymPy/Python 语法解析。
LaTeX 解析支持常见数学符号与结构,复杂表达式也可混合使用 LaTeX 与 SymPy 语法。
二、数学符号输入标准
- 加减乘除:
+-*/ - 乘方:
**(如x**2) - 根号:
sqrt() - 绝对值:
abs() - 普通对数 log_a(x):
log(x, a) - 自然对数 ln(x):
log(x) - 三角函数:
sin()cos()tan()cot()sec()csc() - 反三角函数:
asin()acos()atan()acot()等 - 双曲函数:
sinh()cosh()tanh()等 - 自然常数:
e - 圆周率:
pi - 正 / 负无穷:
oo/-oo - 括号:全部使用圆括号
() - 虚数单位:
I
示例
| 数学含义 | 应输入的表达式 |
|---|---|
| 2x | 2*x |
| x 的平方 | x**2 |
| x 的算术平方根 | sqrt(x) |
| 以 2 为底 x 的对数 | log(x,2) |
| 自然对数 ln(x) | log(x) |
| x 的正弦值 | sin(x) |
三、集合 / 区间输入标准
- 列举法:
FiniteSet(1,2,3) - 描述法:
ImageSet(Lambda(x, f(x)), Domain) - 内置集合:
- 实数集
Reals、复数集Complexes、自然数集Naturals、正整数集Naturals0、整数集Integers、有理数集Rationals、空集EmptySet - 区间:
- 闭区间
[x,y]:Interval(x,y) - 左开右闭
(x,y]:Interval.Lopen(x,y) - 左闭右开
[x,y):Interval.Ropen(x,y) - 开区间
(x,y):Interval.open(x,y) - 并集:
Union(A,B) - 交集:
Intersection(A,B) - 补集 / 差集:
Complement(A,B)(A 为全集)
示例
| 数学含义 | 应输入的表达式 |
|---|---|
| 集合 | FiniteSet(1,2) |
| 区间 [1,2] | Interval(1,2) |
| 区间 [1,2) | Interval.Ropen(1,2) |
| 区间 (1,2) | Interval.open(1,2) |
| 并集 {0}∪[1,2] | Union(FiniteSet(0),Interval(1,2)) |
| 交集 {1,2}∩{2,3} | Intersection(FiniteSet(1,2),FiniteSet(2,3)) |
| 补集 R[-1,1] | Complement(Reals,Interval(-1,1)) |
FiniteSet 使用案例
- "定义"页面的函数定义域中输入
FiniteSet(1,2,3)将定义域限定为离散点集 {1,2,3} - "方程"页面的主元取值范围中输入
FiniteSet(0,1)限定只求解该集合中的根 - 组合:
Union(Interval(0,1), FiniteSet(2))表示 [0,1] 与点 2 的并集
ImageSet 使用案例
- 映射集合:
ImageSet(Lambda(x, x**2), Interval(0, 5))表示 {x² | x∈[0,5]} - 周期解:sin(x)=0 的解集可表示为
ImageSet(Lambda(n, n*pi), Integers) - 定义域描述:
ImageSet(Lambda(x, 2*x+1), Integers)表示所有奇数
四、函数输入标准
对于在"定义"页面已定义的函数,可在其余大多数输入框直接使用:
- 作为符号参与运算:已定义
g(x)=x**2,输入g+1/g得到x**2 + 1/x**2 - 以函数调用形式传参:已定义
f(x)=x**2,输入f(3)自动计算3**2=9;支持嵌套调用如f(g(2))
五、分母有理化
在求导、积分、方程求解、表达式变形等模块中,若结果分母含根号,系统自动执行分母有理化,将结果化简为分子分母均为整式或根式的最简形式。
Example
计算 1/sqrt(2) 时,结果自动显示为 sqrt(2)/2,而非 1/sqrt(2)。
六、微分方程输入标准
微分方程的输入不符合上面的函数输入标准,因为微分方程的解在求解前未知。系统解析时会排除所有已定义的函数避免干扰,待求解函数固定为 f(x)。
使用 f(x).diff(x,n) 表示对 x 的 n 阶导数,可省略 1,直接写 f(x).diff(x) 表示一阶导数。
Example
勾选"微分方程",左式输入 f(x).diff(x,1),右式输入 f(x)+1,
即完成方程 f'(x)=f(x)+1 的输入,求解得到 f(x)=C1*exp(x)-1。