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?
3 Réponses :
import math x = b + (math.sqrt((b ** 2) - 1 )) / (2 * a)
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.
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.
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.
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)
@ james-jameson Veuillez jeter un œil à cette option et faites-moi savoir si vous avez des questions.