问题标签 [computer-algebra-systems]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
11885 浏览

c# - 用于代数简化和求解的 C# 库

网络上有很多代数求解器和简化器(例如,algebra.com 上的一个不错的)。但是,我正在寻找可以作为更大项目的一部分插入 C# 的东西(我正在制作自己的计算器,但显然我会请求许可等)。

理想情况下,我会使用如下代码:

's' 将简化为:"1082.532/x+5*x+2.866*x^2"

(那里有 3dp 精度,但如果需要可以更改)。

求解特定变量也很好。我需要一些轻量级的东西,而且速度也很快(上面的计算最好在 5ms 左右,包括启动延迟)。

经过一些研究,像 Sage、Octave 或 Mathematica 这样的程序可能是矫枉过正(我的应用程序可能只是一个小于 200k 的小型 exe)。Dotnumerics.com 或 Mathdotnet.com 可能是合适的,但前者似乎没有提到代数简化,而后者缺乏文档和示例是一种关闭。我想知道是否还有任何合适的替代方案。可以在这里找到一个大列表: http ://en.wikipedia.org/wiki/Comparison_of_computer_algebra_systems

0 投票
4 回答
1737 浏览

c++ - 方程等式测试(在 C++ 中或使用 Unix 工具)(代数函数同构)

我正在寻找 C++ 开源库(或只是开源 Unix 工具)来做:Equality test on Equations

方程可以在运行时构建为 AST 树、字符串或其他格式。

方程大多是简单的代数方程,带有一些关于未知函数的假设。域,将是整数算术(没有浮点问题,因为相关问题是众所周知的 - 感谢@hardmath 强调它,我假设它是已知的)。

示例:输入可能包含 function phi,并带有关于它的假设(大多数情况)phi(x,y)=phi(y,x)并尝试解决:

equality_test( phi( (a+1)*(a+1) , a+b ) = phi( b+a, a*a + 2a + 1 )

它可以是模糊的或任何相等测试 - 我的意思是,它不必总是成功(即使方程相等,它也可能返回“假”)。

phi如果支持上述关于函数的假设存在问题,我可以处理这个问题,所以也欢迎简单的线性代数方程等式测试人员

  • 你能推荐一些 C/C++ 编程库或 Unix 工具吗?(开源)
  • 如果可能的话,你能否附上一些例子,在给定的库/工具中,这样的平等测试可能是什么样子的?

PS如果这样的equal_test可以(在成功的情况下)返回同构 - (我的意思是一种“映射”) - 在两个给定的方程之间,将非常受欢迎。但是没有这种能力的工具也很受欢迎。

PS“模糊测试器”是指内部方程求解器在寻找两个函数的“同构”方面将是“模糊的”,而不是在针对随机输入的测试方面 - 我可以实现这个,当然,但我尝试找到更精确的东西。

PPS 还有另一个问题,为什么我需要更好的性能解决方案,而不是蛮力“所有输入测试”。上面的方程是我内部问题的简化形式,我没有方程中的变量之间的映射。也就是说,我有eq1=phi( (a+1)*(a+1) , a+b )eq2=phi( l+k, k*k + 2k + 1 ),我必须找出那个a==kb==l。但是这个子问题我可以用“蛮力”方法(甚至这种方法的渐近复杂度)来处理,如果只有几个变量,让它是 8。所以我需要为每个可能的映射做这个 equation_test。如果有一个工具可以完成整个工作,我将非常感激,并且可以为这样的项目做出贡献。但我不需要这样的功能,只需 equation_test() 就足够了,我可以轻松处理休息。

把它们加起来:

  • equal_test() 只是我必须解决的许多子问题之一,因此计算复杂性很重要。
  • 它不必是 100% 可靠的,但比仅使用一些随机输入和变量映射测试方程的可能性更高:)。
  • “是”或“否”的输出(所有附加信息可能有用,但在未来,在这个阶段我需要“是”/“否”)
0 投票
1 回答
1749 浏览

c++ - C/C++/Obj-C 中的符号数学库

我正在尝试在 iPhone 上实现一个图形计算器。我正在寻找一个可以获取表达式或函数字符串并让我操作它们(查找导数、截距、零点等)的库。这样的事情存在吗?

0 投票
1 回答
152 浏览

haskell - 用于仿射 k 代数计算的库?

我正在寻找一个图书馆或计算机代数系统,这将有助于计算环中多项式的运算

其中F_2是 2 元有限域,是从中的所有元素生成的<f^2 - f>理想值。(我认为/希望/我很确定这是使用 xor 作为 + 和作为 * [维基百科] 的布尔代数环)。f^2 - ffF_2[...]

例如,

我在 Haskell 中为此编写了代码,但不幸的是性能不是很好。

注意:标题“仿射 k 代数”来自 Eisenbud 的 Commutative Algebra with a View Toward Algebraic Geometry 书 p。35; 如果有更好的名字,请编辑问题,谢谢!

0 投票
2 回答
1330 浏览

math - Mathematica-like (LaTeX) typesetting for own CAS application

As I am using Mathematica a lot I got the idea to write a small and free CAS which just exposes a very small subset of necessary functions and packages to be used and I want to present the results in an appropriate way to the user like Mathematica does (ignore the Facebook logo in the background :D ):

Mathematica's Output

My first idea was to create LaTeX code in the background and to pdflatex the source and include the PDF then in the view... however this seems way to much overkill! I want to write this CAS either in C++ or C# and I want to know if there are any recommended solutions to output nice formula like that.

My first thought was a "real-time formula editing view" but it would be ok to have an input box to enter the commands and formulas and the upper view just to be uneditable output.

0 投票
2 回答
7731 浏览

symbolic-math - Maxima:将矩阵转换为列表

我通过以下方式将列表转换为 Maxima 中的矩阵:

如何以另一种方式做到这一点?如何将给定的矩阵DataM转换为列表DataL

0 投票
2 回答
101 浏览

reflection - 符号计算的反射语言

我正在寻找一种在程序上运行的语言,用这种语言编写。那是一种语言,其程序是该语言的主要(可能是唯一的)对象。

类似于自编程转换语言之类的东西,完全是基于这种观点而制作的。

动机如下:

有一个程序 P1 旨在计算 Real -> Real 我想要一个程序 P2 将 P1 转换为 P1 的符号导数(或反导数)。显然 P2 可能无法对大多数输入进行适当的处​​理。

有人可能会将其视为针对 lambda 的模式匹配。但是非常方便的模式匹配。

0 投票
1 回答
715 浏览

xml - 用于模型交换的内容 MathML 与 OpenMath

在我的研究小组中,我们有不同的人在不同的符号工具中进行代数建模,例如 Matlab 中的 Symbolic Toolbox 和 Python 中的 Sympy。然后,这些模型通常会导出为 C 代码,并复制粘贴到我们自己的基于 C++ 的符号工具中,以进行进一步的符号操作。

在寻找这种难以维护的方法的替代方案时,我发现了两种看起来或多或少标准化的格式:OpenMath 和“Content MathML”。请注意,我们只对语义感兴趣,而不是漂亮的打印。

这两种格式有什么关系?两者都可以用来存储和交换工具之间的数学表达式吗?

数学表达式是否还有其他或多或少标准化的交换格式?

0 投票
1 回答
1812 浏览

c++ - 精确的大有限域线性代数库(例如 GF(2^128) / GF(2^256) )

一般的

我正在寻找一个能够对大型有限域进行精确计算的库,例如 GF(2 128 )/ 2 128和 GF(2 256 )/ 2 256。我在下面列出了我需要的功能以及很酷的功能。显然,图书馆应该尽可能快:-)。啊,因为我不是 C++ 大师(可能大多数库都是 C++),所以示例代码说生成一个随机元素/一个常数并将其乘以它的乘法逆

必备功能

  • 添加字段元素
  • 字段元素的乘法
  • 求域元素的乘法逆元

很高兴有功能

  • 矢量/矩阵支持
  • 随机元素支持

我已经看过的库可能不起作用

  • FFLAS/FFPACK,似乎不适用于如此大的有限域
  • Givaro似乎不适用于如此大的有限域

我已经看过可以工作的库(但我无法使用)

  • NTL,我无法反转元素,但它应该真的可以工作,因为SAGE在定义 GF(2^256) 时似乎使用了这个库,并且可以使用反转元素x^(-1)
  • PARI/GP,我无法在文档中找到我需要的所有内容,但 SAGE 文档有点说它应该可以工作

其他注意事项

  • 我正在编写一个 Haskell 程序,稍后将与该库进行接口,因此更简单的 Haskell 接口会更好:-)
0 投票
1 回答
558 浏览

java - 计算机代数系统的图形用户界面

再会。我们正在研究基于 Java 的计算机代数框架。此时它只能以编程方式使用(例如,您需要在 java 或 groovy 上编写一些代码才能使用它),但它对用户不太友好。搭建一个完整的开发环境,用Java语法来解决一些简单的问题,太复杂了。

我们现在正在寻找一些相对简单的方法来为其创建用户界面和语法。我们的想法是使用一些现有的 Java 兼容语言以及简单而强大的语法(我们正在考虑 groovy)来编写与我们的库的绑定,它将使用一些更自然的语法隐藏底层复杂的基础设施。

例如:

爪哇:

时髦的:

我们需要一种具有良好 IDE(至少具有自动完成功能)的语言,它可以根据我们的需要进行调整(嵌入)。

对于这项任务,您有什么建议(IDE-语言组合)?