CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Python] Comment obtenir une valeur exacte ?

[hard]ware
[hard]ware
Niveau 14
28 décembre 2014 à 18:12:32

Salut :ok:

Je suis en train de faire quelques petits programmes de calcul formel, par exemple :

  • systèmes d'équations à 2 inconnues
  • équations du second degré
  • théorème de Pythagore
  • additions de vecteurs

Bref,
je voudrais, par exemple, quand j'ai à calculer 12/8 qu'il ne me donne non pas 1.5 mais 3/2 ! :-)
Et ceci pour des calculs beaucoup plus compliqués.

Y'a les simplifications de fraction, mais aussi par exemple le fait de tomber sur une racine carré qui ne tombe pas juste (par exemple : sqrt(25)=5 donc ça c'est bon mais sqrt(26)=5,0990195135927848300282241090228 donc là je voudrais qu'il affiche sqrt(26) !

Voici mon code pour le second degré (qui donne aussi un tableau de signe tout dégueulasse, mais ça c'est parce que je ne me suis pas occupé de l'interface graphique) :

import os
from math import *
while 1:
	a=float(input("A = "))
	if a==0:
		print("\"A\" doit être différent de 0 !")
	else:
		break
b=float(input("B = "))
c=float(input("C = "))
delta=b**2-4*a*c
if delta > 0:
	x1=(-b-sqrt(delta))/(2*a)
	x2=(-b+sqrt(delta))/(2*a)
	print("Delta =",delta,"\nDelta > 0 donc 2 solutions réelles")
	print("x1 =",x1,"\nx2 =",x2)
	if -a < 0:
		sma="-"
	else:
		sma="+"
	if a < 0:
		sa="-"
	else:
		sa="+"
	print("/",sa,"/",x1,"/",sma,"/",x2,"/",sa,"/")
if delta == 0:
	x=(-b/(2*a))
	print("Delta =",delta,"\nDelta = 0 donc 1 solution réelle")
	print("x =",x)
if delta < 0 :
	i=complex(0,1)
	print("Delta =",delta,"\nDelta < 0 donc deux solutions complexes.")
	z1 = (-b-sqrt(-delta)*i)/(2*a)
	z2 = (-b+sqrt(-delta)*i)/(2*a)
	print("z1 =",z1,"\nz2 =",z2)
os.system("pause")

Voici ce que ça peut donner :
http://i.gyazo.com/35bfb6ff1813df112a8fb077430508dc.png

http://i.gyazo.com/9cf5b5f1d49b8a9475a24c422d6a9c0d.png

comme vous le voyez, c'est assez désagréable à lire :hap:
donc je voudrais avoir des valeurs exactes afin de pouvoir y voir plus clair :ok:

Si vous pouviez m'aider...

:merci:

godrik
godrik
Niveau 30
28 décembre 2014 à 18:34:17

Alors il faut travailler en symbolique. Je ne sais pas si il y a une lib python qui fait ca pour toi.

[hard]ware
[hard]ware
Niveau 14
28 décembre 2014 à 18:37:06

qu'est-ce que c'est ?

JmeDefonceAuLSD
JmeDefonceAuLSD
Niveau 5
29 décembre 2014 à 02:04:41

Il existe plusieurs logiciels très performants de calcul formel, les plus connus étant Maple ou Mathematica. Mais Python a également un module de calcul formel, **sympy**.

Essaye de te renseigner sur cet outil, je pense que ça doit correspondre a tes attentes :ok:

Lagrangien
Lagrangien
Niveau 8
29 décembre 2014 à 21:06:38

Bon si tu veux t'amuser, tu peux le faire toi-même, si tu en reste aux simplifications de fractions et au racines, c'est assez basique.

Cela dit, pour les fractions tu as le module fraction (il est inclus dans les distributions de base je crois).

Dans ce module, quand tu évalues fractions.Fraction(8, 6), ça te donne un objet Fraction(4, 3).

[hard]ware
[hard]ware
Niveau 14
05 janvier 2015 à 16:51:34

Salut,

Bon alors les logiciels de calcul formel, aucun intérêt pour moi étant donné que le but est que je le fasse moi même en utilisant le moins de choses "toutes faites" possible.

Du coup ouais je suis allé voir sympy vite fait, déjà j'arrive pas à l'importer, donc je suppose qu'il faut le télécharger ? Comment ça s'installe ?
Après je comprends pas trop le fonctionnement non plus mais je n'y ai pas non plus passé beaucoup de temps.

Le module fraction est effectivement inclus :oui:

Donc, effectivement, si je tape :

fractions.Fraction(8,6)

ça m'affiche bien :

Fraction(4,3)

Par contre, pour l'affichage, comment faire pour avoir quelque chose de propre comme ça 4/3 (mais debout)
Du coup je pensais genre afficher une valeur au dessus, afficher un trait, et une valeur en dessous.

Mais comment récupérer individuellement le 4 et le 3 ?

:merci:

TheMightyEagle
TheMightyEagle
Niveau 1
05 janvier 2015 à 17:40:10

Par exemple :

f=fractions.Fraction(6, 9)
numerateur=f.numerator
denominateur=f.denominator

https://docs.python.org/3.4/library/fractions.html

[hard]ware
[hard]ware
Niveau 14
05 janvier 2015 à 17:56:27

Merci beaucoup :-)

Si vous avez d'autres éléments pouvant m'aider, je suis preneur :-)

(pour la racine carré notamment)

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment