4次发布
0.1.4 | 2023年12月8日 |
---|---|
0.1.3 | 2023年8月16日 |
0.1.2 |
|
0.1.1 | 2023年8月13日 |
0.1.0 | 2023年6月27日 |
#323 in 数学
每月28次下载
115KB
2K SLoC
概述
Number Diff - 一个通用的微积分工具
函数
Number Diff围绕一个类似微积分的函数构建,即一个接受f64作为参数,根据某些特定规则返回f64的函数。在当前库的状态下,函数仅限于ƒ: ℝ ⟶ ℝ(请参阅支持的函数,这些函数可以使用)。
计划在不久的将来扩展到ƒ: ℂ ⟶ ℂ。
用法
函数由Function结构体表示。可以通过解析字符串或使用标准运算符组合函数来创建Function结构体。然后可以使用call(x)方法(或在使用夜间功能时,可以直接调用Function实例)使用Function实例。
查看一些示例!
支持的函数
函数 | 解析标识符 | 代码中的函数 |
---|---|---|
sin | "sin(_)" | sin() |
cos | "cos(_)" | cos() |
tan | "tan(_)" | tan() |
sec | "sec(_)" | sec() |
csc | "csc(_)" | csc() |
cot | "cot(_)" | cot() |
asin | "asin(_)" | asin() |
acos | "acos(_)" | acos() |
atan | "atan(_)" | atan() |
sinh | "sinh(_)" | sinh() |
cosh | "cosh(_)" | cosh() |
tanh | "tanh(_)" | tanh() |
自然对数 | "ln(_)" | ln() |
绝对值 | "abs(_)" | abs() |
平方根 | "sqrt(_)" | sqrt() |
阶乘 | "_!" | factorial() |
加法 | "_ + _ " | + |
减法 | "_ - _" | - |
乘法 | "_ * _" | * |
除法 | "_ / _" | / |
常数 | "1", "-12", "3.14"等。 | f64 |
自变量 | "x" | Function::default() |
请注意,上表中的“_”代表上述提供的任何其他函数。此外,运算符(+,-,*,/)不能相互应用。尝试将一个运算符应用于另一个运算符将导致解析器返回解析错误。
导数
所有支持的函数都是光滑函数,这意味着一旦初始化,函数保证是光滑函数,因此其所有导数也都是光滑函数。
导数是通过解析方法计算的。提供的导数函数始终是原始函数的精确导数(尽管不一定是最简形式)。
请注意,在其当前状态下,微分在某些罕见情况下可能会因简化失败而无法避免除以零而返回NaN。
可以使用differentiate()方法或derivative_of()函数对函数实例进行微分。
积分
大多数情况下积分是稳定的。使用1000位的标准精度,积分使用辛普森规则来找到积分的近似值。
有关使用示例,请查看积分文档!
请注意,当在包含指定函数值未定义的区间(包括积分界限)内进行积分时,结果值可能是NaN。
此外,当在包含指定函数值无穷大的区间(包括积分界限)内进行积分时,结果值可能是无穷大,即使积分应该收敛。
级数展开
有关级数展开的说明,请参阅这篇文章。
当前级数展开的稳定性
展开技术 | 稳定性 | 用法 |
---|---|---|
泰勒级数 | 稳定 ✅ | get_taylor_expansion() |
麦克劳林级数 | 稳定 ✅ | get_maclaurin_expansion() |
傅里叶级数 | 未实现 ❌ | N/A |
许可证
该项目受Apache License 2.0许可。有关完整的许可描述,请参阅许可文档!
依赖关系
~375–590KB
~12K SLoC