问题标签 [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.
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
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==k
和b==l
。但是这个子问题我可以用“蛮力”方法(甚至这种方法的渐近复杂度)来处理,如果只有几个变量,让它是 8。所以我需要为每个可能的映射做这个 equation_test。如果有一个工具可以完成整个工作,我将非常感激,并且可以为这样的项目做出贡献。但我不需要这样的功能,只需 equation_test() 就足够了,我可以轻松处理休息。
把它们加起来:
- equal_test() 只是我必须解决的许多子问题之一,因此计算复杂性很重要。
- 它不必是 100% 可靠的,但比仅使用一些随机输入和变量映射测试方程的可能性更高:)。
- “是”或“否”的输出(所有附加信息可能有用,但在未来,在这个阶段我需要“是”/“否”)
c++ - C/C++/Obj-C 中的符号数学库
我正在尝试在 iPhone 上实现一个图形计算器。我正在寻找一个可以获取表达式或函数字符串并让我操作它们(查找导数、截距、零点等)的库。这样的事情存在吗?
haskell - 用于仿射 k 代数计算的库?
我正在寻找一个图书馆或计算机代数系统,这将有助于计算环中多项式的运算
其中F_2
是 2 元有限域,是从中的所有元素生成的<f^2 - f>
理想值。(我认为/希望/我很确定这是使用 xor 作为 + 和作为 * [维基百科] 的布尔代数环)。f^2 - f
f
F_2[...]
例如,
我在 Haskell 中为此编写了代码,但不幸的是性能不是很好。
注意:标题“仿射 k 代数”来自 Eisenbud 的 Commutative Algebra with a View Toward Algebraic Geometry 书 p。35; 如果有更好的名字,请编辑问题,谢谢!
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 ):
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.
symbolic-math - Maxima:将矩阵转换为列表
我通过以下方式将列表转换为 Maxima 中的矩阵:
如何以另一种方式做到这一点?如何将给定的矩阵DataM转换为列表DataL?
reflection - 符号计算的反射语言
我正在寻找一种在程序上运行的语言,用这种语言编写。那是一种语言,其程序是该语言的主要(可能是唯一的)对象。
类似于自编程转换语言之类的东西,完全是基于这种观点而制作的。
动机如下:
有一个程序 P1 旨在计算 Real -> Real 我想要一个程序 P2 将 P1 转换为 P1 的符号导数(或反导数)。显然 P2 可能无法对大多数输入进行适当的处理。
有人可能会将其视为针对 lambda 的模式匹配。但是非常方便的模式匹配。
xml - 用于模型交换的内容 MathML 与 OpenMath
在我的研究小组中,我们有不同的人在不同的符号工具中进行代数建模,例如 Matlab 中的 Symbolic Toolbox 和 Python 中的 Sympy。然后,这些模型通常会导出为 C 代码,并复制粘贴到我们自己的基于 C++ 的符号工具中,以进行进一步的符号操作。
在寻找这种难以维护的方法的替代方案时,我发现了两种看起来或多或少标准化的格式:OpenMath 和“Content MathML”。请注意,我们只对语义感兴趣,而不是漂亮的打印。
这两种格式有什么关系?两者都可以用来存储和交换工具之间的数学表达式吗?
数学表达式是否还有其他或多或少标准化的交换格式?
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 接口会更好:-)
java - 计算机代数系统的图形用户界面
再会。我们正在研究基于 Java 的计算机代数框架。此时它只能以编程方式使用(例如,您需要在 java 或 groovy 上编写一些代码才能使用它),但它对用户不太友好。搭建一个完整的开发环境,用Java语法来解决一些简单的问题,太复杂了。
我们现在正在寻找一些相对简单的方法来为其创建用户界面和语法。我们的想法是使用一些现有的 Java 兼容语言以及简单而强大的语法(我们正在考虑 groovy)来编写与我们的库的绑定,它将使用一些更自然的语法隐藏底层复杂的基础设施。
例如:
爪哇:
时髦的:
我们需要一种具有良好 IDE(至少具有自动完成功能)的语言,它可以根据我们的需要进行调整(嵌入)。
对于这项任务,您有什么建议(IDE-语言组合)?