web-dev-qa-db-fra.com

opérateur plus/moins pour python ±

Je cherche un moyen d'effectuer une opération plus/moins en python 2 ou 3. Je ne connais pas la commande ou l'opérateur, et je ne trouve pas de commande ni d'opérateur pour le faire.

Est-ce que je manque quelque chose?

8
Whitequill Riclo

Une autre possibilité: incertitudes est un module permettant d'effectuer des calculs avec des tolérances d'erreur, c'est-à-dire

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

qui serait écrit comme

from uncertainties import ufloat

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

Edit: J'obtenais des résultats bizarres, et après un peu plus de jeu avec ceci, j'ai compris pourquoi: l'erreur spécifiée n'est pas une tolérance (limites additives strictes comme dans les plans d'ingénierie) mais une valeur d'écart-type - qui C’est pourquoi le calcul ci-dessus a pour résultat

ufloat(2.7, 0.07071)    # not 0.1 as I expected!
11
Hugh Bothwell

Si vous utilisez matplotlib, vous pouvez imprimer des expressions mathématiques similaires à celles utilisées avec Latex. Pour le symbole +/-, vous utiliseriez:

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

Où r convertit la chaîne en un format brut et les signes-$ entourent la partie de la chaîne qui est une équation mathématique. Tous les mots de cette partie seront dans une police différente et ne comporteront aucun espace, sauf indication explicite du code correct. Cela se trouve sur la page correspondante de la documentation matplotlib .

Désolé si c'est trop de niche, mais je suis tombé sur cette question en essayant de trouver cette réponse même.

5
Orange Pukeko

Je pense que vous voulez cela pour une équation comme celle-ci;

enter image description here

Eh bien, il n’existe aucun opérateur pour cela sauf si vous n’utilisez pas SymPy , vous pouvez uniquement créer une instruction if et rechercher chaque multiplicateur.

2
user4435153

Si vous souhaitez imprimer le symbole ±, utilisez simplement:

print(u"\u00B1")
1
mimoralea

Il n’existe pas encore d’objet de ce type dans SymPy (comme vous avez pu le constater, il existe un problème suggérant un https://github.com/sympy/sympy/issues/5305 ). Ce n'est pas difficile à imiter, cependant. Créez simplement un symbole et échangez-le avec +1 et -1 séparément à la fin. Comme

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)

Vous pouvez également simplement suivre deux équations dès le départ. 

1
asmeurer

Au lieu de calculer des expressions comme

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

vous pourriez utiliser

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