【问题标题】:Is there a Calculus library for JavaScript? [closed]有 JavaScript 的微积分库吗? [关闭]
【发布时间】:2010-07-02 01:08:04
【问题描述】:

有人知道 JavaScript 的微积分库吗?我做了一些谷歌搜索并没有想出任何东西。我申请了 WolframAlpha API,但除非他们选择给我拨款,否则这很昂贵。

理想情况下,我可以将二维点数组输入一个函数,并取回导数点的图形(数组)。

如果没有这样的库,我会创建一个来分享。

【问题讨论】:

  • 一个点没有导数。您理想的库会尝试为数据拟合曲线并计算其导数吗?
  • 是的!我理想的图书馆会做到这一点。
  • 这是一个令人着迷和/或令人敬畏的想法! :) 我是一个总微积分 n00b,所以请原谅我的无知,但是:你将如何找到一条曲线来拟合数据(以编程方式)?
  • 您可能希望将函数内插到特定顺序。在谷歌搜索 CAS 时,一个库来到了my search。但可能使用导数定义的数值方法更好。

标签: math javascript calculus


【解决方案1】:

既然你说你有一个二维点数组,我假设你有两个变量 f(x, y) 的函数。这意味着你没有单一的衍生品。相反,您会得到一组偏导数。

您可以使用有限差分公式逼近偏导数。

关于xf(x, y) 的偏导数将是(f(x+h, y) - f(x-h, y))/2h

关于yf(x, y) 的偏导数将是(f(x, y+h) - f(x, y-h))/2h

在这些公式中,h 是网格上节点之间的空间,假设您有一个规则间隔的网格。如果水平和垂直间距不同,请使用相对于x 的部分水平间距和相对于y 的部分垂直间距。

更新:我误解了你的问题。我认为二维数组是一个域值数组。如果您有xf(x) 值的列表,您可以将f'(x) 近似为(f(x+h) - f(x-h)) / 2h。这将适用于任何地方,除了其中一个术语超出范围的第一个和最后一个点。您可以在左端使用(f(x + h) - f(x))/h,在右端使用(f(x) - f(x-h))/h。近似值在端点处会不太准确,但这是无法避免的。

【讨论】:

  • 我认为它实际上是一个变量 f(x) = y 的函数。 x的每个值都间隔1。我还能用有限差分公式吗?
  • 太棒了!当 'h' 非常大 (1) 时这仍然有效吗?
  • 准确性将取决于两件事:h^2 和三阶导数的大小。如果 h = 1,除非 f'''(x) 很小,即除非 f 近似为二次方,否则您的误差会很大。
  • 在不了解您的应用程序的情况下,很难说什么会足够好。但是人们经常做的一件事是将“自然三次样条”拟合到数据中,然后精确地区分样条。如果您搜索,应该很容易找到样条代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-07
相关资源
最近更新 更多