我想用符號生成方程,然後在值與類型的子從庫等uncertainties
(但也可以是使用自定義類型的任何庫),但是,似乎使用.evalf(subs={...})
方法失敗,而奇錯誤信息:評估與Python等效的操作sympy表達
>>> from uncertainties import ufloat
>>> from sympy.abc import x
>>> (x**2).evalf(subs={x: ufloat(5,1)})
Traceback (most recent call last):
...
File "<string>", line 1
Float ('5.0')+/-Float ('1.0')
^
SyntaxError: invalid syntax
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<pyshell#116>", line 1, in <module>
(x**2).evalf(subs={x: ufloat(5,1)})
...
sympy.core.sympify.SympifyError: Sympify of expression 'could not parse '5.0+/-1.0'' failed, because of exception being raised:
SyntaxError: invalid syntax (<string>, line 1)
- 我知道,因爲
str(ufloat(5,1))
sympy被轉換我的價值用繩子給'5.0+/-1.0'
所以它顯然想我的替代值的字符串表示會看起來像一個象徵性的表達。
我知道很多sympy操作(如分化)將不可能支持這一點,它只會是可能的,如果所有的自由符號所取代,因爲這兩種類型的不玩好:
>>> x + ufloat(5,1)
Traceback (most recent call last):
File "<pyshell#117>", line 1, in <module>
x + ufloat(5,1)
TypeError: unsupported operand type(s) for +: 'Symbol' and 'Variable'
但假設我沒有留下符號操作/變量是否可以簡單地用python等價操作來評估sympy表達式?
清楚,既更容易,更迂迴,然後我期待,這(與一個以上參數)正是我所需要的,所以我實際上要使用的代碼是'return lambdify(subs.keys(),expr)(* subs.values())'非常感謝你! –