Bonsoir,
Je cherche à faire une fonction qui doit me donner la ou les solutions d'un polynôme du second degré (ax² + bx + c).
Pour l'instant, voici ma fonction (elle fonctionne très bien) :
Code coloré ici
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 let polynome a b c = let delta = b ** 2. - 4. * a * c (-b - sqrt(delta)) / (2. * a), (-b + sqrt(delta)) / (2. * a) let phi = polynome -1. 1. 1.
Quand je lance ça dans interpréteur, j'ai bien mon couple de solutions qui apparait.
Seulement voilà, j'aimerais aller plus loin et faire en sorte qu'un couple ne soit retourné que si delta > 0 et qu'un nombre seul soit retourné seulement si delta = 0 et enfin, qu'un complexe soit retourné si delta < 0;
Je code donc ma fonction ainsi mais cela ne semble pas fonctionner :
Ou ici
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 let polynome a b c = let delta = b ** 2. - 4. * a * c if delta > 0. then (-b - sqrt(delta)) / (2. * a), (-b + sqrt(delta)) / (2. * a) elif delta = 0. then (-b) / (2. * a) else (-b - sqrt(abs(delta))) / (2. * a), (-b + sqrt(abs(delta))) / (2. * a) let phi = polynome -1. 1. 1.
Je pense savoir d'où vient l'erreur : si mon premier 'if' retourne un tuple de float, alors mes autres 'elif' et 'else' doivent aussi retourner un tuple de float.
Y a t-il un moyen de remédier à ce problème ?
Merci d'avance.
Partager