【发布时间】:2013-07-01 09:12:19
【问题描述】:
这是我的问题(附有适用示例):
... some code
### x=0.5*t*(copysign(1, t - 0.5) + 1) + 0.1
### x=string value
X= Matrix(len(x),1,x)
>>>print X[0]
0.5*t*(copysign(1, t - 0.5) + 1) + 0.1
>>>print type(X[0])
<class 'sympy.core.add.Add'>
t1=linspace(0,1,2)
REF=[]
for i in range(len(t1)):
REF.append(M_ref[0].subs(t,t1[i]))
>>>print REF
0.100000000000000, 0.5*copysign(1, 0.5) + 0.6
所以 REF[0] 来自 'sympy.core.numbers.Float' 类,但 REF[1] 来自 'sympy.core.add.Add' 类(当我展开linspace)。因此我不能在我的其余代码中使用它们。我尝试使用evalf,但这并没有解决问题。
我需要 REF 列表中的值都是浮点数(或整数)。
任何帮助将不胜感激。
【问题讨论】:
-
docs.python.org/2/library/math.html,这只是一个例子(当你使用 copysign(1,x) 时它与 sign(x) 相同)
-
我不明白这怎么可能是标准库数学的复制签名,因为它不支持未评估或符号参数。
-
我是从一个接口入口(字符串)中得到x值的,但是就像你说的,我也觉得copysign有问题,虽然我不知道怎么解决,因为我必须从我的界面以“copysign(1, x*t)”形式获取它,然后用一个值替换 t
标签: python string list int sympy