问题标签 [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 投票
1 回答
37 浏览

computer-algebra-systems - 岩浆 CAS。找到 [1..100] 中的所有 d 使得 x^3+y^3=d 对 x,y 在有理数

由于某种原因,此方法仅打印出“procedure() ... end procedure”。老实说,我不知道为什么,我尝试修复它,但在上一个。代码 C_i 和 E_i 是 for 循环中的有效概念。你不必告诉我确切的错误,甚至不需要知道 Magma,但如果你能帮助我解决这个问题,那就太好了(比如团队合作?)。

0 投票
1 回答
343 浏览

global-variables - 岩浆计算机代数系统局部和全局变量

当我运行这个 (Max(100)) 时,它告诉我 max = 0。但是我知道在不同的地方有 #gen = 1 和 2,因此 #gen > 0。我很难定位 max。它认为 if 和 for 语句之外的 max 与 for 和 if 语句中的 max 不同,因此不会更新 max。我不确定如何在岩浆 CAS 语法中对此进行纠正。有人可以帮我理解这方面的 Magma 语法吗?我试着把本地最大值;在循环和 if 语句中,但给了我语法错误。

0 投票
1 回答
469 浏览

maxima - 最大值:简化包含最小值的表达式

我正在尝试使用 Maxima 来简化涉及 min(a, b) 的数学表达式。假设我已经定义了
z = min(x1, x2)d = abs(x1 - x2),那么身份x1 * x2 = z*(z+d)x1 + x2 = 2*z + d随之而来。

例如,采用以下表达式:

如果我手动应用上述身份,我可以将其简化为

在千里马,天真地尝试

产生一个长的表达。

如何让 Maxima 找到隐藏在表达式深处的x1 * x2x1 + x2的出现?我尝试了各种形式的tellimpletletsimp,例如:

或者

或者

我怎样才能让 Maxima 产生我可以手动到达的漂亮的简短表达式?我需要处理更大的表达式。

0 投票
1 回答
85 浏览

parsing - 规范化多项式


我需要阅读多项式并将其转换为规范化形式。
例如,我读入4*x * (x^2 + 4x + 3),它必须转换为4*x^3 + 16*x^2 + 12*x.
是否有一些棘手的算法或者我必须自己考虑一些事情。我认为基本上这只是扩大了术语。我正在递归解析术语并生成解析树,因此规范化操作将应用于此解析树。
感谢所有帮助我的人

0 投票
1 回答
178 浏览

performance - 优化一组多项式以提高计算速度

我有一组由计算机代数系统 (CAS) 生成的多项式表达式。例如,这是该集合的一个元素。

-d*d*l*l*qb*b*l*l*q+2*d*f*j*l*q+2*b*f*h*l*qf*f*j*j*qb *b*j*j*q+2*b*d*h*j*qf*f*h*h*qd*d*h*h*q+b*b*j*j*o*o-2 *b*d*h*j*o*o+d*d*h*h*o*o-2*b*b*j*l*n*o+2*b*d*h*l*n *o+2*b*f*h*j*n*o-2*d*f*h*h*n*o+2*b*d*j*l*m*o-2*d*d *h*l*m*o-2*b*f*j*j*m*o+2*d*f*h*j*m*o+b*b*l*l*n*n-2 *b*f*h*l*n*n+f*f*h*h*n*n-2*b*d*l*l*m*n+2*b*f*j*l*m *n+2*d*f*h*l*m*n-2*f*f*h*j*m*n+d*d*l*l*m*m-2*d*f*j *l*m*m+f*f*j*j*m*m

我需要尽可能快地在 C 程序中执行所有这些。如果您仔细查看这些公式中的任何一个,很明显我们可以优化它们以提高计算速度。例如,在上面粘贴的多项式中,我可以立即看到 -d*d*l*l*q、2*d*f*j*l*q 和 -f*f*j*j*q 项,这样我就可以用 -q*square(d*lf*j) 替换它们的总和。我相信这里可以做很多这样的事情。我不相信(但也许我错了)任何编译器都能够找到这种优化,或者可能是更高级的优化。我试图让 maxima(一个 CAS)为我做这件事,但没有任何结果(因为我是 maxima 的初学者,我可能错过了一个神奇的命令)。所以,我的第一个问题是:我们可以使用什么工具/算法来优化多项式表达式以提高计算速度?

当谈到优化一组共享大部分变量的多项式表达式时,事情变得更加复杂。实际上,逐个表达式优化表达式可能不是最理想的,因为编译器可以在优化之前识别公共部分,但如果不作为一个整体执行,则在优化之后就不能识别了。所以,我的第二个问题是:我们可以使用什么工具/算法来优化一组多项式表达式以提高计算速度?

此致,

PS:这篇文章与“计算机代数软件以最小化一组多项式中的运算数量”有一些相似之处,但是其中给出的答案指向 CAS 程序,而不是说我们如何使用它们来实现我们的目标。

0 投票
1 回答
113 浏览

c - C中的代数操作

现在我正在寻找一个可以执行基本线性代数的程序,其中我有 2 个常数:A 和 B,我可以简单地输入它们的系数并在其上添加其他值。

例子:

假设我想找到斐波那契数列的项

我想拿 A + B 并将其附加到文件中。

现在我想添加第二个和第三个学期

等等。

我有一个程序可以很好地对所有数值执行此操作,但是,我希望看到它以代数方式上升,而不使用 binets 公式。

我唯一的猜测是将 A 和 B 的系数存储到 2 个单独的文件中,以便计算它们然后将它们打印出来,但是,如果线性代数在 C 中可用,它会容易得多。

编辑:没关系,我忘了这是一个适合计算机书呆子的地方,而不是数学书呆子

0 投票
1 回答
2378 浏览

python - 如何在 Sympy 中进行函数组合?

我想做一些类似的事情h = f(g(x))并且能够区分 h, like h.diff(x)。实际上,只有一个这样的功能h = cos(x)是可能的,并且文档清楚地说明了这一点。

但是对于功能组合,它不是那么清楚。如果你这样做了,请给我一个例子或链接我到相关文件。

(如果 Sympy 不能做到这一点,你知道有没有其他的包可以做到这一点,即使它是非 python 的)

谢谢你。

0 投票
1 回答
3262 浏览

symbolic-math - maxima CAS - 如何用变量替换表达式?

在最大值中,有没有办法为子表达式应用变量替换?例如,用 替换x+y实例z

subst适用于微不足道的情况,但仅适用于其他任何情况。

0 投票
1 回答
174 浏览

symbolic-math - 在传递给 sum() 之前强制评估索引表达式

我想编写一个(以某种方式)增强的 sum 函数,它一次需要多个索引,但我不明白如何让它工作。这是我目前拥有的:

我认为这可以通过在传递给函数first(indexes)之前强制 Maxima 扩展为符号来解决。sum我试过''(...)and ev(..., nouns),但没有任何成功。

0 投票
1 回答
68 浏览

symbolic-math - sum()、diff() 或 integration() 的“私有”符号

让我们考虑一下我在上一个问题中已经提到的以下功能:

一般情况下它是可行的,但是如果原始表达式f已经包含符号r,j等等怎么办?在这种情况下,它不会做正确的事情。到目前为止,我发现的唯一解决方案是为这些符号使用一些唯一的前缀,或者至少用下划线开头它们的名称:r__rj__j。但我希望应该有一个更惯用的解决方案。有没有什么?