2015-01-10 54 views
5

我正在尋找一種方式在Python 2或3。我不知道命令或操作員做了加/減操作,我無法找到一個命令或操作員來做到這一點。加/減爲Python操作±

我錯過了什麼嗎?

+2

嗯,什麼是加/減操作?記住:在數學中,一個函數將一個值(或一組值)從其定義映射到一個值... –

+0

我想你可能需要sympy這個。 – tox123

+0

@MarcusMüller他的意思是當你做平方根時,它同時具有負值和正值。 – tox123

回答

8

另一種可能性:uncertainties是與容錯性做計算模塊,即

(2.1 +/- 0.05) + (0.6 +/- 0.05) # => (2.7 +/- 0.1) 

這將被寫成

from uncertainties import ufloat 

ufloat(2.1, 0.05) + ufloat(0.6, 0.05) 

編輯:我得到一些奇怪的結果,在玩了一會兒之後,我想出了原因:指定的誤差不是容差(工程藍圖中的硬加性限制),而是標準偏差值 - 這就是爲什麼上述計算離子導致

ufloat(2.7, 0.07071) # not 0.1 as I expected! 
+0

這不是OP問我想,輸出應該是'2.1+ 0.05 = 2.15/2.1-0.5 = 2.05和0.55/0.65'你怎麼得到這個結果? –

2

我想你想要這樣的方程式;

enter image description here

那麼有沒有運營商的,除非你不使用SymPy,唯一可以做的就是讓一個if聲明,並找到每個乘數。

1

有一個在SymPy沒有這樣的對象,但(正如你所看到的,有暗示一個https://github.com/sympy/sympy/issues/5305問題)。不過,這並不難。只需創建一個符號,並在末尾分別用+1和-1進行交換。像

pm = Symbol(u'±') # The u is not needed in Python 3. I used ± just for pretty printing purposes. It has no special meaning. 
expr = 1 + pm*x # Or whatever 
# Do some stuff 
exprpos = expr.subs(pm, 1) 
exprneg = expr.subs(pm, -1) 

你也可以從一開始就跟蹤兩個方程。

3

如果你碰巧使用matplotlib,你可以打印正如人們所用乳膠類似的數學表達式。對於+/-符號,你可以使用:

print(r"value $\pm$ error") 

如果將R將字符串轉換爲原始格式和$ -signs都是圍繞這是一個數學等式字符串的一部分。除非用正確的代碼明確指出,否則本部分中的任何單詞都將採用不同的字體,並且它們之間不會有空格。這可以在matplotlib documentation的相關頁面上找到。

很抱歉,如果這是過於小衆,但我碰到這個問題stumbeled試圖找到如下回答。

0

而不是計算表達式像

s1 = sqrt((125.0 + 10.0*sqrt(19))/366.0) 
s2 = sqrt((125.0 - 10.0*sqrt(19))/366.0) 

你可以使用

pm = numpy.array([+1, -1]) 
s1, s2 = sqrt((125.0 + pm * 10.0*sqrt(19))/366.0)