2015-01-10 9 views
5

Sto cercando un modo per eseguire un'operazione più/meno in python 2 o 3. Non conosco il comando o l'operatore, e non riesco a trovare un comando o operatore per farlo.più/meno operatore per python ±

Mi manca qualcosa?

+2

um, che cosa è un plus/minus operazione? Ricorda: in matematica, una funzione associa un valore (o un insieme di valori) dalla sua definizione a esattamente un valore ... –

+0

Penso che potresti volere sympy per questo. – tox123

+0

@ MarcusMüller indica come quando si esegue una radice quadrata, ha un valore negativo e positivo simultaneamente. – tox123

risposta

8

Altra possibilità: uncertainties è un modulo per fare calcoli con tolleranze di errore, cioè

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

che sarebbe scritto come

from uncertainties import ufloat 

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

Edit: stavo ottenendo alcuni risultati strani, e dopo aver giocato un po 'di più ho capito perché: l'errore specificato non è una tolleranza (limiti hard additive come nei blueprint tecnici) ma un valore di deviazione standard - che è il motivo per cui il calcolo sopra ione si traduce in

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

Questo non è OP chiedendo che penso, l'output dovrebbe essere '2.1+ 0.05 = 2.15/2.1-0.5 = 2.05 e 0.55/0.65' come ottieni questo risultato? –

2

Penso che lo desideri per un'equazione come questa;

enter image description here

Beh c'è nessun operatore per questo a meno che non si utilizza SymPy, solo tu puoi fare è fare una dichiarazione if e trovare ogni moltiplicatore.

1

Non esiste oggetto in SymPy ancora (come avete visto, v'è un problema che suggerisce uno https://github.com/sympy/sympy/issues/5305). Non è difficile da emulare, però. Basta creare un simbolo e scambiarlo con +1 e -1 separatamente alla fine. Mi piace

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) 

Si potrebbe anche solo tenere traccia di due equazioni dall'inizio.

3

Se si utilizza Matplotlib, è possibile stampare espressioni matematiche simili a quelle ottenute con Latex. Per il +/- simbolo, si usa:

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

Qualora la r converte la stringa in un formato RAW e il $ -signs sono intorno alla parte della stringa che è un'equazione matematica. Qualsiasi parola presente in questa parte avrà un carattere diverso e non avrà spazi bianchi tra di loro a meno che non venga esplicitamente indicato con il codice corretto. Questo può essere trovato sulla pagina relavent dello matplotlib documentation.

Scusate se questo è troppo di nicchia, ma ho trovato una risposta a questa domanda cercando di trovare la risposta seguente.

0

Invece di espressioni di calcolo come

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

si potrebbe usare

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