问题标签 [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.
clojure - Clojure中的符号矩阵库,需要建议
虽然有很多用于线性代数的 Java 库,但 Clojure 目前没有包含对符号数学支持的惯用计算机代数系统。作为开始,我想我可以开始做一些简单的事情。
作为第一步,我认为正确的数据结构将是一个好的开始。
第 1 步:实现持久矩阵
我将使用deftype
(或reify
),现在,为了便于实施,我将使用哈希图进行存储(如果认为它更好但状态权衡,请提出替代方案)。(可以根据您的性能要求想象许多不同的实现,例如使用数组或委托给外部 java 库并实现某种瞬态接口。)
我的问题是,我应该考虑实现哪些接口/协议?(一般来说,clojure 使用的所有协议/接口的一个好的列表是什么?)还有关于如何实现这些的建议吗?
我要实施的事情清单:
-Assoc'ing 会很有用,可以以不可变的方式修改矩阵的各个部分
- 将矩阵视为一个函数作为元素的访问器,我在想你可以传递一个二元组来返回一个元素、一个值(按宽度 * y + x 索引)、哈希图来获取列、行、或次要,通过自定义查询哈希图/语言。
请注意,我目前的目标是设计良好的抽象,以便能够灵活地选择实现。
c++ - 有谁知道可以求解运动学方程的开源计算机代数库?
我一直在寻找一个开源的计算机代数库,它可以解决诸如运动方程之类的方程组。所以我能以某种方式输入 5 个变量中的 3 个(初始速度、最终速度、加速度、距离和时间),并指定一个要求解的变量,它会给我答案。我认为我在找到可以做到这一点的东西时遇到的问题是这些方程是非线性的。我想知道是否有人知道可以做到这一点的东西?我只是以运动学方程为例,好像它可以做到这一点,它将能够完成我需要的所有其他事情。我不知道我是否要求太多,但我感谢任何答案!
sage - Sage:Catch MACSYMA-QUIT 未定义
我的情况
当我在普通shell上使用sage.all
模块时,会在运行方法时引发错误,例如or:python
sage.all
solve
assume
运行assume
或solve
在sage
外壳(和预处理器)上运行就像它应该做的那样。
我的问题
我该怎么做才能sage.all
正常工作python
?
谢谢 - 如果我的问题有任何不清楚的地方,请发表评论。
f# - C# 库重载 ^ 运算符。如何改用**?
Symbolism库重载了算术运算符。虽然它是用 C# 编写的,但我可以从 F# 中使用它:
输出:
但是,它也使权力超载^
。这当然不适用于 F#。
作为解决方法的一步,我为权力导出了一个方法组:
输出:
如何重载**
以使用Aux.Pow
方法组?
我可以做这样的事情:
这确实适用于MathObject
价值观:
但是Aux.Pow
也超载int
:
欢迎任何建议!
python - 处理 sympy 积分返回的分段方程
在 sympy 中,我有一个返回 Piecewise 对象的积分,例如
我想只提取这个分段方程的第一个分支,换句话说,我希望能够做一些itest.parts(0)
简单的事情sqrt(pi)*z/2
。我似乎找不到任何方法来做到这一点,但也许我在文档中使用了错误的搜索词。有任何想法吗?
编辑
戳了一下,我设法发现如果我这样做,itest.args[0][0]
我可以提取这个表达式。然而,这似乎有点像黑客。有更好的方法吗?
matlab - 区分后整理表情
我在这个问题中使用的方程包含指数。出于这个原因,在微分之后,除了额外的常数和其他因素外,它们看起来几乎没有变化。我想知道是否有可能将这些指数收集回它们所在的表达式的名称中。这是一个例子:
给定这个函数定义
微分后会得到
如果我能以某种方式将其转换为
这对 MuPad 或任何其他 CAS 包是否可行?
programming-languages - 是否有一种语言使用计算机代数系统来实现附加功能和优化?
例如,想象一个这样的函数:
使用符号代数,编译器将确定 x = y / 2。更好的是,它会抱怨 int 不足以存储 y / 2 的结果。想象一下这个功能扩展到求解具有约束和/或边界条件的 ODE,并在需要时使用符号或数字方法(在运行时)进行集成。我,一方面,很想看到这样的事情:
简化为:
此外,它不仅可以在函数内部局部简化表达式,还可以执行整个程序优化。它可以重新排列表达式以提高数值稳定性(减少浮点误差的影响),甚至可以通过使用不同的表示来完全消除它们。BigInt,IEEE1394 的四精度浮点数,由谓词定义的集合,分段函数的积分。可能负载可以做更多。
这样的事情是可能的,不是吗?我知道您可以使用 Mathematica 或 MatLab 的编程语言函数执行类似的操作,但它们被源代码调用。我希望它被编译器应用于源代码。(这些语言有这种东西吗?我不知道。)当我有借口时,我喜欢在工作中使用 Mathematica,但后来我在 C++ 中得到了看起来很神奇的函数,如果不引用外部函数就毫无意义数学笔记本。我希望能够成为使用一种语言、一种环境的数学家和程序员。这样的事情存在吗?
symbolic-math - 简化规则未正确应用
我正在尝试使用此处http://raoul.koalatux.ch/sites/ladderoperator/ladder_operator.html中的代码在 Maxima 中使用 Dirac Bra-Ket 表示法
对于大多数表达式,它都有效:
都正确简化,但是
未能简化为 bra(0)。我怎样才能让 Maxima 简化这种情况?
matrix - 最大值中的任意大小矩阵
我想用任意大小的矩阵做一些计算。简单示例 - 取两个矩阵 NxM 和 MxK,具有任意元素,并将乘积元素视为总和。
但是如果不将矩阵大小指定为整数,我找不到一种方法来进行这种符号计算。
matrix()
要整数,makelist()
要整数。
有没有办法在最大值中做这样的事情?或者任何CAS?
computer-algebra-systems - 用于 Reduce/Redlog 计算机代数系统的类 Lisp(前缀)输出
这是关于 Reduce 计算机代数系统(reduce-algebra.com)的。
我可以将 Reduce(和 Redlog)中的表达式打印成 Reduce 输入格式,例如(c < 0 or b > 0)
使用off nat$
. 我想获得类似 Lisp 的语法,例如(or (< c 0) (> b 0))
.
是否有这样做的 Reduce 包?
(好吧,我总是可以实现一个单独的解析器和打印机。)