【问题标题】:JavaScript computer algebra systemJavaScript 计算机代数系统
【发布时间】:2020-12-13 14:48:54
【问题描述】:

我正在为 JavaScript 寻找一个简单的 computer algebra system (cas),但我在谷歌上找不到任何东西。我只需要基本功能:

  • 将表达式简化为某些规范形式。能够检查两个表达式是否相同,即 a(x+y) == ax+ay
  • 解析数学公式。我希望它能够读取像 ax²+4x 这样的表达式。
  • 求解简单方程等

你知道这样的图书馆吗?

【问题讨论】:

  • 求解简单方程:有多简单?简单的操作可以建立不可解的方程,例如x^x = 3x^5 + x^3 - 6*x^2 + 3 = 0.
  • 顺便说一句,尝试谷歌搜索“符号数学”。
  • @KennyTM 这些方程并非不可解,除非你在谈论它们如何有多个解。解决方案:x^x = 3x^5 + x^3 - 6*x^2 + 3 = 0
  • 赏金,因为我对此非常感兴趣。

标签: javascript


【解决方案1】:

(我在回答自己,因为赏金未能引起人们的注意。)

你可能想试试thisCAS,它有一些不错的功能(虽然有些部分坏了,请使用旧版本)。

【讨论】:

  • 该库的自述文件表明它不能求解方程。
【解决方案2】:

你可以试试nerdamer

  • 简化
  • 保理
  • 扩展中
  • 自定义函数
  • 向量
  • 矩阵
  • 集成
  • 分化
  • 根求解器
  • 插值

//Expanding
var result = nerdamer('a*(x+y)',null,'expand');
document.getElementById('text').innerHTML = '<p>'+result.text()+'</p>';
//Solving equation
var sol = nerdamer.solveEquations('0=x^2+x+a','x');
document.getElementById('text').innerHTML += '<p>'+sol.toString()+'</p>';
<script src="http://nerdamer.com/js/nerdamer.core.js"></script>
<script src="http://nerdamer.com/js/Algebra.js"></script>
<script src="http://nerdamer.com/js/Solve.js"></script>
<div id="text"></div>

【讨论】:

  • 在这个例子中它显示0.51/2 只是一个巧合,因此它似乎不是一个数字求解器。尝试应该返回 1/3sqrt(2) 的东西。
  • @polkovnikov.ph 请举一个这样的等式的例子。
  • 我有点理解 polkovnikov.ph 的意思。在他发表评论时,系数表示为小数,因此实际上它们在求解器中使用时是近似值。然而,在较新的版本中,情况不再如此。 1/3 是一个实数比率,并且 sqrt(2) 在得到指示之前不再转换为小数。
【解决方案3】:

你也可以看看JSolve:http://www.movss.com/~rich/jsolve/

它是用 Java 编写的,并使用 GWT 框架编译成 JavaScript。

【讨论】:

    【解决方案4】:

    我找到了另一个看起来不错的,Coffeequate

    【讨论】:

      【解决方案5】:

      要解析数学公式,您可以试试jscc。解决它们留给读者作为练习......

      【讨论】:

      • 很遗憾,jscc 的链接现在已损坏。
      【解决方案6】:

      【讨论】:

      • 首先,Javascript无法访问外部网站。其次,W|A 不是正确的 CAS。第三,其服务条款禁止通过自动化方式访问。
      • 首先,三星上的 XMLHttpRequest 可以访问外部网站。第二部分是正确的,但您可以从响应中提取符号解释。三、products.wolframalpha.com/api/termsofuse.html的哪一部分禁止自动访问?
      • 对不起,关于 XMLHttpRequest 你是对的。我将这个问题与关于 SmarTV 的问题混淆了。是的,您需要将请求代理到 wolfram API 以获取 JavaScript 中的结果。这可以通过在托管项目的站点上设置 ReverseProxy 来完成。
      • 您对自动访问部分的看法是正确的 - 我将 W|A ToS 与其 API ToS 混淆了。
      【解决方案7】:

      要将实体库添加到列表中:http://mathjs.org/

      它甚至帮助解决了complex calculations 的问题。

      【讨论】:

      • 但它绝不是计算机代数系统。不管用它做了什么晦涩难懂的算术。
      【解决方案8】:

      Algebrite 似乎是一个非常好的算法: http://algebrite.org

      在他们的网站底部有一个超过 7 个其他 JS CAS 库的列表。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-09
        • 2019-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多