6 个版本 (稳定)
1.1.3 | 2023年1月30日 |
---|---|
1.1.2 | 2023年1月29日 |
1.1.0 | 2023年1月20日 |
1.0.0 | 2023年1月12日 |
0.1.0 | 2023年1月10日 |
#2410 在 解析器实现
每月30 次下载
125KB
3K SLoC
AfterMath
AfterMath 是一个可以原生处理复数的数学解析和评估库。这个库源于处理任意用户定义数学表达式的需求。它基于一个可评估的AST(你还可以将AST编译成逆波兰表示法)
此库还提供了一种根据给定变量(称为绑定)对解析表达式进行微分的方法
工作原理
解析
首先将输入转换为令牌流,然后对该流应用一些转换以处理多参数函数、一元运算符和隐式乘法
所有这些操作都使用迭代器方法,因此不会产生不必要的分配
然后它消耗修改后的令牌流,并使用Shunting yard算法生成AST
微分
它盲目地应用最简单的规则。例如,d/dx 2x
被微分到 (d/dx 2) * x + (d/dx x) * 2
建议在评估之前先简化微分后的表达式(见下一部分)
简化
在这里,使用简化来表示减少节点数。此库提供了一种评估基本运算(+、-、*、/、%、^)的常量项的方法。这有助于移除无用的节点(例如乘以0时)并允许用户显示更清晰的AST表示。函数只是对AST进行深度优先搜索并合并每个产生已知值的节点。
未来工作
- 制作更多示例
- 记录更多内容
依赖关系
~380–510KB