问题标签 [symengine]
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.
python - 如何访问 SymEngine 以与 SymPy 一起使用?
我正在编写一些代码,我注意到与 Mathematica 相比,SymPy 的简化命令非常慢。Mathematica 可以在一瞬间计算的东西,SymPy 需要永远计算。
我最近在网上读到 SymEngine 正在(或已经?)实施到 SymPy 中以使其更快,并且目标是(曾经?)从 Python 访问 SymEngine。有什么办法可以让我的计算机上的 SymPy 使用 SymEngine?
python - 如何将 evalf() 应用于 symengine.py 中的表达式?
我们在pythonevalf()
的包中找不到任何东西。symengine
有没有存在?
更详细地解释我们的问题。
我们正在尝试切换到,symengine
而不是sympy
因为我们感知到必要的加速。我们使用符号代数工具来解决在组合随机结构生成中具有应用的优化问题。
在对 sympy 进行了一些测试后,我们发现解决一些“看起来很无辜”的优化问题需要在范围1e+24
内外进行中间计算(但最终它们最终提供了正确的答案)。然后我发现我误用了 sympy 的功能subs()
,因为它不如evalf()
替换字典精确。
这个问题在函数 subs 的手册中有描述:
因为前者将确保获得所需的精度水平。实际上,使用标准sympy.subs()
函数替换 e+24 或symengine.subs()
抛出无穷大,尽管 e+24 仍在 numpy.float64 的范围内,当我调用 built-in 时,我怀疑它是我的机器强制转换的标准类型float(...)
功能。
我们知道“lambdify”,如果您进行重复替换并希望获得较高的数值精度,这是推荐的步骤,但这将是下一步。我们无法使用 python 解释器的手册,因为代码是预编译的,在互联网上也很难找到。查看源代码也没有帮助(但也许我错过了一些东西)。
c++ - C ++构造函数中的双花括号
以下 C++ 代码行中的双花括号是什么意思?
对于上下文,这是来自 SymEngine 代码 ( "symengine/polys/uintpoly_piranha.h"
) 中的一个文件,可以在下面的链接中找到,上面一行中使用的 Piranha 库也是如此。
- SymEngine 源代码:https ://github.com/symengine/symengine
- 食人鱼源代码:https ://github.com/bluescarni/piranha
我知道单花括号用作初始化列表,但括号中的双花括号的含义对我来说意义不大。
我在双花括号上发现的主要内容是这篇文章,但它似乎不适用于这里。
另外,对于链接这样的源代码,我深表歉意,但由于我缺乏理解,我不确定如何制作一个较小的示例。
谢谢!
julia - Julia 将 SymEngine 表达式写入文件
当我尝试将表达式从代码写入文件时,我收到一个错误:
MethodError: no method matching write(::IOStream, ::SymEngine.Basic)
我使用的代码被认为将表达式写入文件,然后在其他程序中从那里获取。这是我的代码:
也许有一种方法可以将SymEngine.Basic
对象转换为String
逆向?我可以将它们写为 aString
然后将它们转换回SymEngine
then 。
matlab - 评估符号 matlab 函数
我正在尝试在下面的代码中评估 G11 symfun,但它失败并继续向我显示我选择按照代码中指定的方式设置的变量 t,我什至尝试使用“subs”命令,但它也失败了。我定义了必要的符号和变量,但 t 变量并没有在 'G11' symfun 中评估,还有另一个类似的 symfun,例如 G12 或 K12,但在它们中评估的 t 变量是我的代码
在组装我的系数矩阵后,我尝试为 w 求解这个代数方程:
其中 w 是系统的频率。
matlab - Matlab 错误:缺少域属性“min”
当我在 Matlab 中使用时:
但如果我想找到一个向量的最小值:
你能解释一下为什么吗?
python - 将 Symengine I 转换为 python 1j
我想将Symengine
复数转换I
为 python 1j
,以便我可以在普通 python 中使用这些数字。目前,我有一个代码,但它运行使用sympy
它使其变慢。任何替代解决方案或加速此代码?这是我的代码:
这是我从中获取代码的参考
谢谢
matlab - Matlab中如何用符号表达式填充矩阵?
我想使用 for 循环用符号表达式填充矩阵的行。代码如下。
acc是符号数组,C是矩阵。这个想法是使用循环用 acc(r) 填充 C 矩阵的第 r 行。程序给我一个错误如下:
我该如何解决这个问题?
max - symengine 中的 Argmax 或等效替代方案
我正在对非线性系统网络进行简单的模拟。特别是我有 N 个节点,每个节点由 m 个单元组成。每个单元的输出函数既取决于它的活动,也取决于同一节点中其他单元的活动。
我实现的模拟是在 scipy + jitcode 中。
我实现的第一个版本是根据 softmax 分布,因此我实现了这个简单的函数来计算每个单元的输出。
现在,我想用一个简单的函数替换上面的函数,对于每个节点,为活动度最高的单元输出 1,在其他单元中输出 0。长话短说,对于每个节点,只有一个单元输出 1。
我现在面临的主要问题是如何使用 symengine 执行此操作,以便 jitcode 可以使用它。我在下面实现的功能由于明显的原因不起作用。我猜 if 条件不是很有象征意义。
我没有找到任何 symengine.argmax() 函数或任何智能替代解决方案。你有什么建议吗?
更新
测试这个功能:
我得到以下有希望的输出。一旦我有一些测试,我会更新。
[max(y(2), y(1)) <= y(1), max(y(2), y(1)) <= y(2)]
[max(y(4), y(3)) <= y(3), max(y(4), y(3)) <= y(4)]
python - 为什么 nsolve 说“无法从 -0.499923944877944 创建 mpf。”?
我有一个多项式,我试图找到所有使用 nsolve 进行数值计算的根。当我尝试使用 nsolve 查找最低根(这是我真正需要的唯一根,但我不介意找到所有根)时,我收到一条错误消息,提示“无法从 -0.499923944877944 创建 mpf”。
我尝试过使用多个不同的求解器。当我使用 SymPy 的求解时,它只找到了 5 个根(应该有 6 个)。使用solve也花了很长时间,因为我相信它最初是在尝试象征性地解决它。我尝试了求解集,但没有给出正确的答案。
以下是我的所有代码。一切都按预期进行,直到最底部的 nsolve 为止。
最小的根应该大于或等于-0.5,但它甚至没有达到它给我一个根的程度。