标签: computer-algebra-systems

计算机代数系统简介?

有没有人知道有关计算机代数系统一般理论的任何资源(书籍,课程,讲义或任何内容)(例如mathematica,sympy)?

"介绍性"材料是首选,但我意识到,对于这样一个专门的主题,任何东西都必定相当先进.

math symbolic-math computer-algebra-systems symbolic-computation

37
推荐指数
3
解决办法
1万
查看次数

像SymPy一样的Haskell库?

我需要操作像1 + sqrt(3)这样的表达式,并进行加法,减法和除法等基本算法.我希望结果是某种规范形式,以便它可以用作地图中的键.由于舍入问题,将1 + sqrt(3)转换为浮点是不可行的.

我在Python中使用SymPy来完成这项任务.Haskell有一个等效的本机库吗?

haskell symbolic-math computer-algebra-systems

30
推荐指数
2
解决办法
5857
查看次数

精确大有限域线性代数库(例如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接口更好:-)

c++ math linear-algebra computer-algebra-systems finite-field

17
推荐指数
1
解决办法
1567
查看次数

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

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

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

String s = MathLib.Simplify("5x*(500/x^2*(sqrt(3)/4)+1)+2x^2+(sqrt(3)/2)*x^2");
Run Code Online (Sandbox Code Playgroud)

并且'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# algebra symbolic-math computer-algebra-systems

16
推荐指数
2
解决办法
9372
查看次数

Clojure的计算机代数

简短版本:我对一些Clojure代码很感兴趣,它允许我指定x的变换(例如置换,旋转),在该变换下函数f(x)的值是不变的,这样我就可以有效地生成x的序列满足r = f(x).Clojure的计算机代数有一些发展吗?对于(一个微不足道的)例子

(defn #^{:domain #{3 4 7} 
         :range #{0,1,2}
         :invariance-group :full} 
          f [x]  (- x x))
Run Code Online (Sandbox Code Playgroud)

我可以打电话(preimage f#{0}),它会有效地返回#{3 4 7}.当然,它也能够正确地注释codomain.有什么建议?

更长的版本:我有一个特定的问题让我有兴趣了解Clojure计算机代数的开发.谁能指点我这样的项目?我的具体问题涉及找到满足F(x)= r的所有单词组合,其中F是排名函数,ra是正整数.在我的特定情况下,f可以作为总和来计算

F(x)= f(x [0])+ f(x [1])+ ... f(x [N-1])

此外,我有一组不相交的集合S = {s_i},使得f(a)= f(b)表示a,b表示s,s表示S.所以生成所有x的策略使得F(x)= r应该依赖于F的这种因式分解和每个s_i下f的不变性.换句话说,我计算包含S元素的站点的所有排列,这些元素总和为r,并用每个s_i中元素的所有组合组成它们.以下内容非常简单:

(use 'clojure.contrib.combinatorics)
(use 'clojure.contrib.seq-utils)


(defn expand-counter [c]
 (flatten (for [m c] (let [x (m 0) y (m 1)] (repeat y x)))))

(defn partition-by-rank-sum [A N f r]
  (let [M (group-by f A)
    image-A (set (keys M))
    ;integer-partition computes restricted integer partitions,
    ;returning a multiset …
Run Code Online (Sandbox Code Playgroud)

clojure symbolic-math computer-algebra-systems symmetry

15
推荐指数
2
解决办法
2258
查看次数

构建计算机代数系统

我正在用PHP创建一个CAS(计算机代数系统),但我现在卡住了.我正在使用这个网站.

现在我写了一个tokenizer.它将转换如下的等式:

1+2x-3*(4-5*(3x))
Run Code Online (Sandbox Code Playgroud)

对此:

NUMBER PLUS_OPERATOR NUMBER VAR[X] MINUS_OPERATOR NUMBER MULTIPLY_OPERATOR GROUP
Run Code Online (Sandbox Code Playgroud)

(其中group是另一组令牌).我该如何简化这个等式?是的,我知道你能做什么:添加X-vars,但它们在子组中.我可以用来处理这些令牌的最佳方法是什么?

php computer-algebra-systems

12
推荐指数
1
解决办法
3528
查看次数

处理由sympy整合返回的分段方程式

同情我有一个积分返回一个Piecewise对象,例如

In [2]: from sympy.abc import x,y,z

In [3]: test = exp(-x**2/z**2)

In [4]: itest = integrate(test,(x,0,oo))

In [5]: itest
Out[5]: 
?   ___                                                   
? ?? ? ?z       ?                 ?      1          ??   ?
? ???????   for ?periodic_argument???????????????, ??? ? ?
?    2          ?                 ?          2      ??   2
?               ?                 ?polar_lift (z)   ??    
?                                                         
??                                                        
??                                                        
??    2                                                   
??  -x                                                    
??  ???                                                   
??    2                                                   
??   z                                                    
?? ?    dx                    otherwise                   
??                                                        
?0                                                        
?    
Run Code Online (Sandbox Code Playgroud)

我想提取这个分段方程的第一个分支,换句话说,我希望能够做一些itest.parts(0)简单的提取sqrt(pi)*z/2.我似乎无法找到任何方法来做到这一点,但也许我在文档中使用了错误的搜索词.有任何想法吗?

编辑

稍微探讨一下,我已经设法发现,如果我这样做,itest.args[0][0]我可以提取这个表达式.然而,这看起来有点像黑客.有更好的方法吗?

python symbolic-math sympy computer-algebra-systems symbolic-computation

12
推荐指数
1
解决办法
2894
查看次数

千里马:将矩阵转换为列表

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

DataL : [ [1,2], [2,4], [3,6], [4,8] ];
DataM: apply('matrix,DataL);
Run Code Online (Sandbox Code Playgroud)

怎么用其他方式呢?如何将给定矩阵DataM转换为DataL列表?

symbolic-math computer-algebra-systems maxima

9
推荐指数
2
解决办法
5932
查看次数

内容MathML与OpenMath进行模型交换

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

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

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

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

xml mathml symbolic-math sympy computer-algebra-systems

8
推荐指数
1
解决办法
649
查看次数

如何使用 sympy 求解绝对值方程?

给定方程 |x - 5| + |y| = 5,如何使用 SymPy 解决它?

如果我使用solve()和Abs()的组合,它会给我这个错误

当参数不是实数或虚数时求解 Abs(x - 5)

但是,在会议开始时我写下了

x, y, z = symbols('x, y, z', RealNumber = True)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

谢谢!

python equation sympy computer-algebra-systems equation-solving

7
推荐指数
1
解决办法
3931
查看次数