1
votes

Comment traduire une formule mathématique en code Python?

J'ai besoin de traduire cette formule en python:

x = b + (sqrt((b^2)-1)) / 2a

Quelqu'un peut-il m'aider s'il vous plaît?


0 commentaires

3 Réponses :


2
votes
import math
x = b + (math.sqrt((b ** 2) - 1 )) / (2 * a)

3 commentaires

Priorité des opérateurs en Python. L'exposant a la première priorité. Cela fonctionne aussi: x = b + (math.sqrt (b ** 2 - 1)) / (2 * a). Sans le support intérieur pour b ** 2


Si b vaut zéro, ir augmente ValueError


Merci @Cheche. Si la formule traite également de la racine carrée des nombres négatifs, l'utilisation de la bibliothèque cmath au lieu des mathématiques semble être une solution possible. Cela prend en charge le cas b = 0.



2
votes

Corriger mathématiquement cette solution est

my_roots = quadratic(1, 2, 3)
x_1 = my_roots[0]
x_2 = my_roots[1]

Cela vous donnera les deux racines.

Vous pouvez accéder aux racines en indexant:

import math
import cmath
def quadratic(a, b, c):
    if b == 0:
        f = (cmath.sqrt(b ** 2 - 1 )) / (2 * a)
    else:
        f = (math.sqrt(b ** 2 - 1 )) / (2 * a)
    return b + f, b -f

print(quadratic(1, 2, 3))

En utilisant une fonction Python, vous pouvez réutiliser ce code.


3 commentaires

Si b vaut zéro, ir déclenche ValueError.


@Cheche - Appréciez la note et changez


Oui, si a = 0 n'est plus quadratique. Ce serait donc bien d'attraper et de générer un joli message d'erreur dans ce cas.



0
votes

Cela devrait également fonctionner. Pas besoin d'importer de bibliothèque. En supposant a! = 0 .

Quand b> = 1 :

x = b + (k*1j) ((1 - (b ** 2)) ** 0.5) / (2 * a) 
# positive root: k = +1
# OR
# negative root: k = -1

REMARQUE: vous devriez idéalement avoir deux racines pour sqrt (b ^ 2 - 1) . Votre fonction doit renvoyer les deux valeurs. Maintenant, je suppose que, sous certaines connaissances préalables, vous avez décidé de ne garder que la racine positive.

Lorsque b == 0 , vous obtenez deux racines. Notez que sqrt (-1) = j ou -j (racines complexes).

x = (+1j) / (2 * a) # positive root
# OR
x = (-1j) / (2 * a) # negative root

Plus généralement, lorsque b ** 2 , vous obtenez deux racines complexes.

x = b + (((b ** 2) - 1 ) ** 0.5) / (2 * a)


1 commentaires

@ james-jameson Veuillez jeter un œil à cette option et faites-moi savoir si vous avez des questions.