符号演算与超级计算器——解方程、求积分、无限精度
为什么普通计算器不够用
手机上的计算器 App 能做:
- 四则运算
- 一些基础函数(sin、cos、sqrt)
- 简单科学计算
但做不了:
- 无限精度计算(π 的前 10000 位、超大整数)
- 符号演算(解代数方程、分解因式、求不定积分)
- 函数分析(求导、找根、分析极值)
uWeb + Termux + SymPy 的组合能做。
基础用法
无限精度计算
!pi 10000
得到 π 的前 10000 位数字。普通计算器只给 10~20 位。
!factorial 100
100! 的精确值(158 位大整数)。普通计算器在 20! 就溢出了。
!gcd 48 18
最大公约数(6)。
解方程
!solve x**2 - 5*x + 6
解 x² - 5x + 6 = 0,结果是 x = 2 和 x = 3。
!solve x**3 - 6*x**2 + 11*x - 6
三次方程的三个根。
求不定积分
!integrate x**2
∫x² dx = x³/3 + C
!integrate sin(x)
∫sin(x) dx = -cos(x) + C
求导数
!diff x**3
d(x³)/dx = 3x²
!diff sin(x)*exp(-x)
复合函数的导数。
分解因式
!factor x**2 - 1
x² - 1 = (x - 1)(x + 1)
!factor x**3 - 3*x**2 + 3*x - 1
完全分解:(x - 1)³
原理
这个功能基于 Python 的 SymPy 符号计算库:
- SymPy 用 Python 实现了完整的符号计算引擎
- uWeb 地址栏把命令转发给 Termux
- Termux 里的 Python + SymPy 计算
- 结果(可能是数学表达式的 LaTeX 或纯文本形式)回传到 uWeb
前置条件
Termux 里需要安装:
pkg install python
pip install sympy
更多 SymPy 能力
SymPy 能做的远不止上面举例的这些。你可以在 Termux 里写 Python 脚本,然后用 !python3 script.py 的形式调用:
极限
from sympy import limit, symbols
x = symbols('x')
result = limit(sin(x)/x, x, 0) # x→0 时 sin(x)/x = 1
print(result)
矩阵运算
from sympy import Matrix
A = Matrix([[1, 2], [3, 4]])
print(A.inv()) # 逆矩阵
print(A.det()) # 行列式
级数展开
from sympy import series, symbols
x = symbols('x')
print(series(exp(x), x, 0, 10)) # e^x 的泰勒展开到 x¹⁰ 项
微分方程
from sympy import Function, symbols, dsolve
x = symbols('x')
f = Function('f')
print(dsolve(f(x).diff(x) - f(x), f(x)))
实际使用场景
场景 1:数学/物理作业
- 算大整数(组合数学中常见)
- 检验手算的微积分答案
- 解方程找根
场景 2:编程中的算法分析
- 分析算法复杂度(渐进展开)
- 求特征值和特征向量
- 验证公式推导
场景 3:教育场景
- 演示极限、导数、积分的定义
- 可视化(配合作图功能)原函数和导函数的关系
- 展示不同分解方法的结果
注意事项
- SymPy 是纯 Python 实现的符号计算,速度不如专用 CAS(Mathematica、Maple),但完全免费、可编程
- 复杂表达式的计算可能需要几秒钟甚至更久
- 输入公式时注意 Python 语法(
**是幂、*不能省略、函数名小写)