Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- #----------------------------------------------------------------------------
- # Created by : Alain Van Kerckhoven
- # Created Date: 06/11/2023
- # Licence : GPL
- # Version : 1.0
- # ---------------------------------------------------------------------------
- """
- Calcule les racines de fonctions linéaires, quadratiques et cubiques.
- Le calcul des linéaires présente les résultats sous forme rationelle.
- Le calcul des quadratiques et cubiques recherche aussi les racines complexes.
- """
- # ---------------------------------------------------------------------------
- import cmath # Module pour manipuler les nombres complexes
- import sympy as sp # Module pour manipuler les symboles mathématiques
- print("RÉSOLUTION D'ÉQUATIONS")
- print("")
- vchoix=int(input("Désirez-vous résoudre une équation linéaire (1), quadratique (2) ou cubique (3) ? "))
- print("")
- if vchoix == 1:
- # ===== Equations linéaires =====
- # Demander les coefficients à l'utilisateur
- print("Résolution d'une équation linéaire de la forme ax + b = 0")
- a = sp.Rational(input("Entrez le coefficient a : "))
- b = sp.Rational(input("Entrez le coefficient b : "))
- print("")
- # Vérification si l'équation est linéaire
- if a == 0:
- if b == 0:
- print("L'équation est indéterminée (infinies solutions).")
- else:
- print("L'équation est impossible (pas de solution).")
- else:
- # Calcul de la solution
- x = -b / a
- print(str(int(a))+"x + "+str(int(b))+" = 0")
- print("x = ", sp.simplify(x))
- elif vchoix == 2:
- # ===== Equations quadratiques =====
- # Demander les coefficients à l'utilisateur
- print("Résolution d'une équation quadratique de la forme ax2 + bx + c = 0")
- a = float(input("Entrez le coefficient a : "))
- b = float(input("Entrez le coefficient b : "))
- c = float(input("Entrez le coefficient c : "))
- print("")
- # Calcul du discriminant
- discriminant = b**2 - 4*a*c
- # Calcul des solutions
- solution1 = (-b + cmath.sqrt(discriminant)) / (2*a)
- solution2 = (-b - cmath.sqrt(discriminant)) / (2*a)
- # Afficher les solutions
- print(str(int(a))+"x2 + "+str(int(b))+"x + "+str(int(c))+" = 0")
- if discriminant >= 0:
- print("Les solutions de l'équation sont réelles :")
- print("x1 = ", solution1.real)
- print("x2 = ", solution2.real)
- else:
- print("Les solutions de l'équation sont complexes :")
- print("x1 = ", solution1)
- print("x2 = ", solution2)
- elif vchoix == 3:
- # ===== Equations cubiques =====
- # Demander les coefficients à l'utilisateur
- print("Résolution d'une équation cubique de la forme ax3 + bx2 + cx + d = 0")
- a = float(input("Entrez le coefficient a : "))
- b = float(input("Entrez le coefficient b : "))
- c = float(input("Entrez le coefficient c : "))
- d = float(input("Entrez le coefficient d : "))
- print("")
- # Calcul du discriminant et d'autres constantes
- delta0 = b**2 - 3*a*c
- delta1 = 2*b**3 - 9*a*b*c + 27*a**2*d
- C = ((delta1 + cmath.sqrt(delta1**2 - 4*delta0**3)) / 2)**(1/3)
- # Calcul des solutions
- solution1 = (-1/(3*a)) * (b + C + delta0 / C)
- omega = (-1 + 1j * 3**0.5) / 2 # Racine cubique de l'unité
- solution2 = (-1/(3*a)) * (b + omega * C + delta0 / (omega * C))
- solution3 = (-1/(3*a)) * (b + omega**2 * C + delta0 / (omega**2 * C))
- # Afficher les solutions
- print(str(int(a))+"x3 + "+str(int(b))+"x2 + "+str(int(c))+"x + "+str(int(d))+" = 0")
- print("x1 = ", solution1)
- print("x2 = ", solution2)
- print("x3 = ", solution3)
- else:
- print("J'attendais 1, 2 ou 2. Relancez le programme !")
Advertisement
Add Comment
Please, Sign In to add comment