Sympy返回实数零分数为零
问题描述:
我是Sympy的新手,并且已经意识到它对计算和简化代数表达式非常有用。Sympy返回实数零分数为零
但是,当我写实数的小数部分时,它返回零(像'x'这样的小数部分没有问题)。我究竟做错了什么?
from sympy import *
1./2
Out[2]: 0.5
1/2
Out[3]: 0
答
这是因为python(2.7)在分母或分子中需要一个浮点数来返回浮点数。
在Python 3.x的任何分裂返回一个float
你也可以“修复”在Python 2.7,通过使用:
from __future__ import division
其实蟒蛇按照整数除法规则,并返回一个整数而不是浮点数
答
1/2
根本不使用SymPy。这只是由Python评估。读一读http://docs.sympy.org/latest/tutorial/gotchas.html#two-final-notes-and(我其实推荐阅读whole SymPy tutorial)。
基本上,如果你使用的是SymPy,你可能需要一个理性的数字,你可以用Rational(1, 2)
得到。键入这个更简单的方法是S(1)/2
。 S
函数将1
转换为SymPy的Integer(1)
,然后在除以时变为Rational
。
我知道。如果我想要求解如下方程,就会出现问题:x - 1/2 + a = 0,并且您得到的结果是x = -a而不是x = 1/2 - a – user3218615