首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sympy --未正确转换“Sympy()”

Sympy --未正确转换“Sympy()”
EN

Stack Overflow用户
提问于 2014-07-08 21:00:08
回答 2查看 102关注 0票数 0

如果已经有人问了,我很抱歉。

我只是在学习SymPy,我想知道为什么它不会对一个看似简单的等式给出一个正确的答案。

代码语言:javascript
复制
from sympy.solvers import solve
from sympy import Symbol, simplify
from sympy.abc import x, alpha, sigma
alpha = Symbol('alpha')
x = Symbol('x')
sigma = Symbol('sigma')
solve((alpha - 0.5*(sigma**2))*((alpha + 0.5*(sigma**2)))**(-1)+ (1/7),sigma**2, simplify = True)

它释放出2.0* alpha,我知道这是不正确的。事实上,答案应该是2.6666*阿尔法或者类似的东西。我假设SymPy出于某种原因将数字2.666转换为整数字符串。

我怎样才能解决这个问题?还有,我能得到解的分数形式吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-08 21:04:47

您可能正在使用Python2.7,因此1/7给出了整数除法:

代码语言:javascript
复制
>>> 1/7
0
>>> 1./7
0.14285714285714285
>>> solve((alpha - 0.5*(sigma**2))*((alpha + 0.5*(sigma**2)))**(-1)+ (1/7),sigma**2, simplify = True)
[2.0*alpha]
>>> solve((alpha - 0.5*(sigma**2))*((alpha + 0.5*(sigma**2)))**(-1)+ (1./7),sigma**2, simplify = True)
[2.66666666666667*alpha]

如果你想要分数的答案,也许

代码语言:javascript
复制
>>> from sympy import Rational
>>> solve((alpha - (sigma**2)/2)*((alpha + (sigma**2)/2))**(-1)+ Rational(1,7),sigma**2, simplify = True)
[8*alpha/3]
票数 3
EN

Stack Overflow用户

发布于 2014-07-09 13:14:34

您还可以使用help(solve)来读取用于说明如何使用rational关键字的解决方案的docstring:

代码语言:javascript
复制
>>> solve(x-.3)
[0.300000000000000]
>>> solve(x-.3, rational=True)
[3/10]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24641520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档