Sympy solveset 将结果存储为浮点数、整数等
Sympy solveset store results as float, integer etc
我正在使用 sympy solveset 求解累积概率函数(或者一般的方程式,如果你想这样考虑的话)。到目前为止,一切都很好。他们 return 然而 "sets" 作为一种结果输出。我在将它们转换为或将它们保存为标准 python 变量类型时遇到了麻烦:在我的例子中,我希望它是一个浮点数。
我的代码如下:
import sympy as sp
from sympy import Symbol
from sympy import erf
from sympy import log
from sympy import sqrt
x = Symbol('x')
p = 0.1
sp.solveset((0.5 + 0.5*erf((log(x) - mu)/(sqrt(2)*sigma)))-p)
Out[91]:
FiniteSet(7335.64225447845*exp(-1.77553477605362*sqrt(2)))
是否可以将其转换为浮点数?仅使用 float()
是行不通的,因为我已经尝试过了,而且到目前为止,我还以某种方式将其存储为列表,然后再次提取数字。但是这种方式看起来很麻烦,不适合我的目的。最后,我会让我们说将这个方程求解 1000 次以上,我希望将所有结果作为一个包含浮点数的整洁数组。
如果将上面的结果存储如下:
q = sp.solveset((0.5 + 0.5*erf((log(x) - mu)/(sqrt(2)*sigma)))-p)
然后 Python 说类型是 sets.setsFiniteSet 如果你试图访问变量 q 它会给你一个错误(顺便说一句,在 Spyder 中工作):
"Spyder was unable to retrieve the value of this variable from the console - The error message was: 'tuple object has no attribute 'raise_error'".
我不知道那是什么意思。非常感谢。
FiniteSet
的工作方式类似于 Python set
。您可以将其转换为列表并通过索引提取元素,例如:
In [3]: S = FiniteSet(7335.64225447845*exp(-1.77553477605362*sqrt(2)))
In [4]: S
Out[4]:
⎧ -1.77553477605362⋅√2⎫
⎨7335.64225447845⋅ℯ ⎬
⎩ ⎭
In [5]: list(S)
Out[5]:
⎡ -1.77553477605362⋅√2⎤
⎣7335.64225447845⋅ℯ ⎦
In [6]: list(S)[0]
Out[6]:
-1.77553477605362⋅√2
7335.64225447845⋅ℯ
In [7]: list(S)[0].n()
Out[7]: 595.567591563886
我正在使用 sympy solveset 求解累积概率函数(或者一般的方程式,如果你想这样考虑的话)。到目前为止,一切都很好。他们 return 然而 "sets" 作为一种结果输出。我在将它们转换为或将它们保存为标准 python 变量类型时遇到了麻烦:在我的例子中,我希望它是一个浮点数。
我的代码如下:
import sympy as sp
from sympy import Symbol
from sympy import erf
from sympy import log
from sympy import sqrt
x = Symbol('x')
p = 0.1
sp.solveset((0.5 + 0.5*erf((log(x) - mu)/(sqrt(2)*sigma)))-p)
Out[91]:
FiniteSet(7335.64225447845*exp(-1.77553477605362*sqrt(2)))
是否可以将其转换为浮点数?仅使用 float()
是行不通的,因为我已经尝试过了,而且到目前为止,我还以某种方式将其存储为列表,然后再次提取数字。但是这种方式看起来很麻烦,不适合我的目的。最后,我会让我们说将这个方程求解 1000 次以上,我希望将所有结果作为一个包含浮点数的整洁数组。
如果将上面的结果存储如下:
q = sp.solveset((0.5 + 0.5*erf((log(x) - mu)/(sqrt(2)*sigma)))-p)
然后 Python 说类型是 sets.setsFiniteSet 如果你试图访问变量 q 它会给你一个错误(顺便说一句,在 Spyder 中工作):
"Spyder was unable to retrieve the value of this variable from the console - The error message was: 'tuple object has no attribute 'raise_error'".
我不知道那是什么意思。非常感谢。
FiniteSet
的工作方式类似于 Python set
。您可以将其转换为列表并通过索引提取元素,例如:
In [3]: S = FiniteSet(7335.64225447845*exp(-1.77553477605362*sqrt(2)))
In [4]: S
Out[4]:
⎧ -1.77553477605362⋅√2⎫
⎨7335.64225447845⋅ℯ ⎬
⎩ ⎭
In [5]: list(S)
Out[5]:
⎡ -1.77553477605362⋅√2⎤
⎣7335.64225447845⋅ℯ ⎦
In [6]: list(S)[0]
Out[6]:
-1.77553477605362⋅√2
7335.64225447845⋅ℯ
In [7]: list(S)[0].n()
Out[7]: 595.567591563886