我是Sympy的新手,并且意识到计算和简化代数表达式非常好 .
但是,当我写出实数的分数时,它返回零(像'x'这样的符号分数没有问题) . 我究竟做错了什么?
from sympy import * 1./2 Out[2]: 0.5 1/2 Out[3]: 0
这是因为python(2.7)需要浮点分母或分子才能返回浮点数 .
在python 3.x中,任何分区都返回一个浮点数
您还可以使用以下命令在python 2.7中“修复”:
from __future__ import division
实际上python遵循整数除法规则并返回一个整数而不是一个浮点数
1/2 根本没有使用SymPy . 这只是由Python评估 . 读一读http://docs.sympy.org/latest/tutorial/gotchas.html#two-final-notes-and(我实际上建议阅读whole SymPy tutorial) .
1/2
基本上,如果你使用SymPy,你可能想要一个有理数,你可以用 Rational(1, 2) 获得 . 更简单的输入方法是 S(1)/2 . S 函数将 1 转换为SymPy的 Integer(1) ,然后在除以时变为 Rational .
Rational(1, 2)
S(1)/2
S
1
Integer(1)
Rational
2 回答
这是因为python(2.7)需要浮点分母或分子才能返回浮点数 .
在python 3.x中,任何分区都返回一个浮点数
您还可以使用以下命令在python 2.7中“修复”:
实际上python遵循整数除法规则并返回一个整数而不是一个浮点数
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
.