【问题标题】:Slow Down SymPy's Computations into Smaller Steps将 SymPy 的计算减慢为更小的步骤
【发布时间】:2015-07-12 21:44:51
【问题描述】:

我正在使用 SymPy,它非常强大。但是,我想让它“放慢速度”并一次解决一个方程的片段,而不是大部分方程。例如,给定一个输入字符串方程(假设格式正确),如

9x-((17-3)(4x)) - 8(34x)

我想先解决

9x-((14)(4x)) - 8(34x)

然后

9x-(56x) - 8(34x)

然后

9x-(56x) - 272x

等等。

另一个例子,

from sympy import *
s = (30*(5*(5-10)-10*x))+10
s2 = expand(s, basic=False)

一步给我-300*x - 740,我只想一次完成一个*

【问题讨论】:

    标签: python tree scipy sympy


    【解决方案1】:

    阅读由 Google Summer of Code 生成的 ideas document,这似乎是一些尚未添加到库中的内容。就目前而言,如果不自己完全编写代码,就无法为您的示例执行此操作。

    上述文档中讨论并强调了将不等同于人类工作的算法转换为离散步骤的问题。我不确定这是否会在扩展的实现中成为一个问题,但对于其他算法来说肯定是一个问题,因为效率的原因,这些机器的计算方式不同。

    tl;dr 此库不支持您的示例的分步细分。目前只有 manualintegrate 函数有分步操作。

    【讨论】:

    • 好的,我想...但是,是否可以将方程分解为多个部分,对每个部分使用 sympy,然后将它们组合在一起?
    • 我不明白为什么不这样做,但你肯定是在努力完成这些步骤,并且破坏了使用库的意义吗?
    • 我的目标是逐步展示求解方程的过程。目标不是显示答案,而是显示用户“可以”采取哪些步骤来获得答案
    • 我只是不确定分解方程的最有效方法
    • 我认为您必须自己编写一些东西,在每个阶段转换人工步骤和打印。希望你能得到一些工作,或者有人提出更好的答案。如果您这样做,请更新您的问题;很想看到它在行动。拿起一本数学教科书,或者只是使用 Google 来获得最佳过程。
    猜你喜欢
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 2013-06-08
    • 2021-08-03
    • 2017-09-16
    • 1970-01-01
    相关资源
    最近更新 更多