【问题标题】:Does sympy v1.0 factor give the wrong answer with (2*4) + (2*4)/(2 + x)?sympy v1.0 因子是否给出 (2*4) + (2*4)/(2 + x) 的错误答案?
【发布时间】:2016-09-15 04:39:55
【问题描述】:

在 windows 8.1 上使用 python 3.5.1 64 位,我已经安装了 sympy,1.0。

交互式运行

from sympy import *
p = symbols('p')
factor('8 + 8/(2+p)')

结果是8*(p + 3)/(p + 2)

如果我去 http://live.sympy.org/ 运行 sympy 0.7.6 和 python 2.7.5 并输入相同的等式并点击评估按钮,我会得到正确的答案。

8 + 8/(2+p)  

没有减少。为什么我在 Python 3.5.1 和 sympy 1.0 中得到了错误的答案?

【问题讨论】:

    标签: python sympy


    【解决方案1】:

    您没有得到错误的答案。 sympy.factor 确保的只是多项式被分解为有理数上的不可约分数。

    注意

    所以 1.0 版中factor 给出的形式是正确的,并且代表了有理数上的一个不可约分数。

    更新:我在 SymPy Live 上运行了您的代码,当您使用 factor 时,您得到的分数完全相同,但没有排除 8。他们是一样的。请注意,正如 Steven Rumbalski 所说,评估分解是两件不同的事情。

    【讨论】:

      【解决方案2】:

      使用您提供的http://live.sympy.org/ 链接我输入了:

      >>> p = symbols('p')
      ... factor('8 + 8/(2+p)')
      (8p+24)/(p+2)
      
      >>> '8 + 8/(2+p)'
      8+8/(2+p)
      

      正如您所见,分解表达式和计算表达式之间存在差异。 SymPy 0.7.6 结果(8p+24)/(p+2) 与您提供的SymPy 1.0 结果8*(p + 3)/(p + 2) 相同,但8 已作为SymPy 1.0 中的一个单独因素被提取出来。

      【讨论】:

      • 啊,抱歉,我在更新答案时没有看到这个。
      • 是的,我对 SymPy 一无所知,但我可以使用交互式解释器并进行基本数学运算。 :) 我赞成你的回答,因为你知道你的东西。
      猜你喜欢
      • 2020-02-25
      • 1970-01-01
      • 2019-10-31
      • 2021-07-04
      • 2019-12-20
      • 1970-01-01
      • 2015-04-07
      • 2021-09-29
      • 2018-12-31
      相关资源
      最近更新 更多