问题标签 [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.
differential-equations - Maxima 没有使用 desolve 找到 diff eq 的解决方案
在我使用 wxmaxima 11.08.0(ubuntu 12.04,Maxima 版本:5.24.0)进行练习期间,
我遵循了P.Lutus 的示例,而他的第二个示例对我不起作用。
然后 Maxima 不再有反应,直到我重新启动它。
我需要先激活或定义最大值以获得结果吗?
预期的输出应该是:
如果我手动定义方程,我的问题还有第二部分:
连续过程的初始条件:
这里最后一个任期仍然存在。这些问题是基于三角函数的使用吗?
最好的问候,马库斯
我通过 PPA 更新到 wxMaxima 13.04.0 和 Maxima 5.29.1。现在desolve完成了,但是最后一个词似乎很复杂。
使用负数最后一项和 desolve 命令执行 init_val 仍然会在等式中留下 %e^(..)*... 。
maxima - 使用 wxMaxima 分解多项式
假设我定义了一些函数,然后更改变量并展开,如下行所示:
我现在想做的是在k中获得多项式,即用一个命令收集 k 的每个幂中的项,以便它显示如下内容:
python - 递归操作树结构:如何获得“整个”树的状态?
首先,上下文:
作为一个附带项目,我正在用 Python 构建一个计算机代数系统,该系统产生求解方程所需的步骤。
到目前为止,我已经能够将代数表达式和方程解析为表达式树。它的结构是这样的(不是实际的代码——可能没有运行):
除此之外,我还有一系列递归操作以简化表达式的函数。它们不是纯粹的功能,但我试图避免依赖于操作的可变性,而是返回我正在使用的节点的修改副本。每个函数看起来像这样:
挑战来自“逐步”部分。我希望我的“简化”函数都是嵌套生成器,它们“产生”解决问题所需的步骤。所以基本上,每次每个函数执行一个操作时,我都希望能够做这样的事情:yield (deepcopy(node), expression, "Combined like terms.")
这样依赖这个库的任何东西都可以输出如下内容:
然而,每个功能只知道node
它正在运行的信息,但不知道整体是什么expression
样子。
所以这是我的问题:保持整个表达式树的“状态”以使每个“步骤”都了解整个表达式的最佳方法是什么?
以下是我提出的解决方案:
- 在适当的位置执行每个操作,并使用全局变量或类中的实例变量来存储指向等式的指针。我不喜欢这样,因为单元测试更难,因为现在我必须先设置类。您还失去了功能更强大的方法的其他优势。
- 将表达式的根传递给每个函数。但是,这要么意味着我必须重复每个操作来更新表达式,要么我必须依赖可变性。
- 让顶层函数根据我产生的每一步“重建”表达式树。例如,如果我 yield
5x + 4x = 9x
,让顶级函数找到 (5x + 4x) 节点并将其替换为“9x”。这似乎是最好的解决方案,但如何最好地“重建”每一步呢?
最后两个相关的问题:这是否有意义?我现在有很多咖啡因在我的系统中,不知道我是否清楚。
我是否过于担心可变性?这是过早优化的情况吗?
algorithm - 符号代数表达式的符号
是否有任何算法可以找到“树 - 形式”中给出的任意符号代数表达式的符号?
我知道不存在通用算法,因为零识别问题对于任意表达式是不可判定的,但是我应该如何解决查找表达式符号的问题?(这是如何在计算机代数中完成的?)
例如:sign(sqrt(2)-1) = ?
computer-architecture - 我需要多少位来存储 AB+C?
我想知道这个-
如果 A、B 是 16 位数字,C 是 8 位数字,我需要多少位来存储结果?32 还是 33?
而且,如果 C 是一个 16 位数字呢?然后怎样呢 ?
如果我能得到解释如何和为什么的答案,我将不胜感激。
max - 如何在 Sympy 中找到函数的最大值?
这些天我正在尝试使用 Sympy 重做单自由度系统的冲击谱。问题可以归约以找到函数的最大值。以下是我不知道该怎么做的两种情况。
第一个是
f
最终目标是获得(变量为t
)的最大绝对值。直接的方法是
这是结果,我尝试了很多方法,但我无法进一步简化。
因此,我尝试了另一种方法。因为我需要最大绝对值和最大的位置abs(f)
发生在平方的同一位置f
,所以我们可以先计算平方f
。
似乎答案几乎相同,只是形式不同。
预期的答案是一个sinc
函数加上一个常量,如下所示:
因此,问题是如何获得最终呈现。
第二个可能有点难。问题可以归结为找到 的最大值f=sin(pi*t/t_r)-T/2/t_r*sin(2*pi/T*t)
,其中t_r
和T
是两个参数。t_r
当和的比值发生变化时,最大值位于不同的峰值T
。而且我找不到在 Sympy 中解决它的方法。有什么建议吗?答案可以用下图表示。
boolean - 总和乘积的乘积
(A+B+C+D')(B+C'+D)(A+C)(A+C)
这是我必须转换为产品总和的表达式。
我得到 (A'B'C'D)+(B'CD')+(A'C')+(A'C')
我不确定我是否正确......如果我是,我可以结合(A'C')并写成2(A'C')吗?
请帮忙
lisp - 在 maxima 中使用 lisp 代码
我想(make-array '(4 3 8))
在 maxima 中使用,它基本上是为了生成多维矩阵,因为我无法找到 API 来创建包括 with 在内的多维矩阵array(name,d1,d2...dm)
。
我可以使用它来执行它,:lisp (make-array '(4 3 8))
但我不知道如何将它标记为类似,
arr: :lisp(make-array '(4 3 8))
我还想知道是否可以在 maxima 函数中使用 lisp 代码。任何形式的帮助都应受到高度重视。
lisp - Maxima:从函数返回函数并在之后对其进行评估
Maxima
我想在. _ Mathematica
因此,我尝试放置一个包装器,make-array
但make_array(fixnum,2,3,4)
将最后一个参数作为参数序列而不是列表,而如果ConstantArray(a,b,c,d..)
使用可变数量的参数进行调用,则我无法将其传递给 make-array 而不将其全部作为列表。
为了解决从作为参数传递的列表中提取元素并放入 make-array 函数的问题,我尝试了,
哪个在调用
返回
make_array(fixnum,1,2,3,5,3)
如果我复制此输出,将其粘贴到控制台并在返回给我的Lisp array [1,2,3,5,3]
.
我曾尝试使用''%
&ev(constantarray(1,2,3,5,3),nouns)
等对其进行评估,但它只是不起作用。我想知道是否有人知道如何强制进行此评估,或者我正在做一些不可能的事情。
algorithm - 是否存在执行分层权限检查的算法?
我有一个代表层次结构的数据结构。
- 文件夹
- 文件夹
- 文件夹
- 文件
- 文件
- 等等
- 文件夹
权限存储在一个平面表中:
在执行搜索等全局操作时,我们需要在树中递归地检查权限。
检查与树结构的各个叶子内联的权限很容易。然而,考虑节点上的权限需要两种已知方法之一:
- 获取过滤后的叶子后,对每个叶子进行后期处理以检查它的父母烫发
- 成本延迟到之后
- 可能找到很多初始叶子,但是在处理父母之后,什么都没有留下,导致做无用的工作
提前计算所有根(授予权限的节点),并在获取叶子时将其用作查询过滤器
- 如果存在许多根导致处理每个叶子花费过多时间,则可能是一个巨大的查询
是否存在任何算法可以更有效地执行此操作?也许重新组织权限数据或向层次结构添加更多信息?
也许添加一些启发式方法来处理极端情况?