#微积分 #函数 #数字 #计算 #数学

number-diff

基于数字是我在使微积分工作更加容易的一种尝试

4次发布

0.1.4 2023年12月8日
0.1.3 2023年8月16日
0.1.2 2023年8月16日
0.1.1 2023年8月13日
0.1.0 2023年6月27日

#323 in 数学

每月28次下载

Apache-2.0

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