avkLab

Equation solver

Nov 8th, 2023 (edited)
614
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.76 KB | Science | 0 0
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. #----------------------------------------------------------------------------
  4. # Created by  : Alain Van Kerckhoven
  5. # Created Date: 06/11/2023
  6. # Licence     : GPL
  7. # Version     : 1.0
  8. # ---------------------------------------------------------------------------
  9. """
  10. Calcule les racines de fonctions linéaires, quadratiques et cubiques.
  11. Le calcul des linéaires présente les résultats sous forme rationelle.
  12. Le calcul des quadratiques et cubiques recherche aussi les racines complexes.
  13. """
  14. # ---------------------------------------------------------------------------
  15.  
  16.  
  17. import cmath  # Module pour manipuler les nombres complexes
  18. import sympy as sp  # Module pour manipuler les symboles mathématiques
  19.  
  20.  
  21. print("RÉSOLUTION D'ÉQUATIONS")
  22. print("")
  23. vchoix=int(input("Désirez-vous résoudre une équation linéaire (1), quadratique (2) ou cubique (3) ? "))
  24. print("")
  25.  
  26. if vchoix == 1:
  27.     # ===== Equations linéaires =====
  28.  
  29.     # Demander les coefficients à l'utilisateur
  30.     print("Résolution d'une équation linéaire de la forme ax + b = 0")
  31.     a = sp.Rational(input("Entrez le coefficient a : "))
  32.     b = sp.Rational(input("Entrez le coefficient b : "))
  33.     print("")
  34.  
  35.     # Vérification si l'équation est linéaire
  36.     if a == 0:
  37.         if b == 0:
  38.             print("L'équation est indéterminée (infinies solutions).")
  39.         else:
  40.             print("L'équation est impossible (pas de solution).")
  41.     else:
  42.         # Calcul de la solution
  43.         x = -b / a
  44.         print(str(int(a))+"x + "+str(int(b))+" = 0")
  45.         print("x = ", sp.simplify(x))
  46.  
  47.  
  48. elif vchoix == 2:
  49.     # ===== Equations quadratiques =====
  50.  
  51.      # Demander les coefficients à l'utilisateur
  52.     print("Résolution d'une équation quadratique de la forme ax2 + bx + c = 0")
  53.     a = float(input("Entrez le coefficient a : "))
  54.     b = float(input("Entrez le coefficient b : "))
  55.     c = float(input("Entrez le coefficient c : "))
  56.     print("")
  57.  
  58.     # Calcul du discriminant
  59.     discriminant = b**2 - 4*a*c
  60.  
  61.     # Calcul des solutions
  62.     solution1 = (-b + cmath.sqrt(discriminant)) / (2*a)
  63.     solution2 = (-b - cmath.sqrt(discriminant)) / (2*a)
  64.  
  65.     # Afficher les solutions
  66.     print(str(int(a))+"x2 + "+str(int(b))+"x + "+str(int(c))+" = 0")
  67.     if discriminant >= 0:
  68.         print("Les solutions de l'équation sont réelles :")
  69.         print("x1 = ", solution1.real)
  70.         print("x2 = ", solution2.real)
  71.     else:
  72.         print("Les solutions de l'équation sont complexes :")
  73.         print("x1 = ", solution1)
  74.         print("x2 = ", solution2)
  75.  
  76.    
  77. elif vchoix == 3:
  78.     # ===== Equations cubiques =====
  79.  
  80.     # Demander les coefficients à l'utilisateur
  81.     print("Résolution d'une équation cubique de la forme ax3 + bx2 + cx + d = 0")
  82.     a = float(input("Entrez le coefficient a : "))
  83.     b = float(input("Entrez le coefficient b : "))
  84.     c = float(input("Entrez le coefficient c : "))
  85.     d = float(input("Entrez le coefficient d : "))
  86.     print("")
  87.  
  88.     # Calcul du discriminant et d'autres constantes
  89.     delta0 = b**2 - 3*a*c
  90.     delta1 = 2*b**3 - 9*a*b*c + 27*a**2*d
  91.     C = ((delta1 + cmath.sqrt(delta1**2 - 4*delta0**3)) / 2)**(1/3)
  92.  
  93.     # Calcul des solutions
  94.     solution1 = (-1/(3*a)) * (b + C + delta0 / C)
  95.     omega = (-1 + 1j * 3**0.5) / 2  # Racine cubique de l'unité
  96.     solution2 = (-1/(3*a)) * (b + omega * C + delta0 / (omega * C))
  97.     solution3 = (-1/(3*a)) * (b + omega**2 * C + delta0 / (omega**2 * C))
  98.  
  99.     # Afficher les solutions
  100.     print(str(int(a))+"x3 + "+str(int(b))+"x2 + "+str(int(c))+"x + "+str(int(d))+" = 0")
  101.     print("x1 = ", solution1)
  102.     print("x2 = ", solution2)
  103.     print("x3 = ", solution3)
  104.  
  105.  
  106. else:
  107.     print("J'attendais 1, 2 ou 2. Relancez le programme !")
  108.  
Tags: math algebra
Advertisement
Add Comment
Please, Sign In to add comment