Bonjour à tous,
Je suis en Terminale S, et j'ai pris l'option ISN.
Comme à chaque fois, celle-ci demande un mini projet concernant un programme qui permettrait de calculer les racines d'une équation du second degré.
Sans trop de problème, j'y suis arrivé, mais en voulant être plus original, je voudrai essayer, après avoir obtenu les solutions de x en fonction de la valeur du discriminant, de factoriser la fonction.
Or je n'ai pas vraiment d'idées pour faire cela ..
Quelqu'un pourrai t'il m'aider ?
Utilise la forme canonique de ax² + bx + c
Ce n'est pas vraiment ce que je veux :/
Heu... Bah si Candy t'as dis ce que tu voulais...
Factoriser ta " fonction " ( oui tu dis fonction mais je vois pas ou il est question de fonction... Tu nous parles d'équation du second degrés... le terme plus exact serrait factoriser ton membre de gauche je pense ) revient à l'écrire sous la forme ax² + bx + c, étant donné qu'une équation du second degrés correspond à une équation où le membre de gauche peut se représenter par une fonction polynôme quand celui de droite vaut 0.
Ainsi c'est ce que tu veux... Non ?
Facorisation d'une équation du second degré :
Quand delta > 0 : a(x-x1)(x-2)
Quand delta = 0 : (x-x')²
C'est ça que je veux :/
Ah oui et quand delta < 0 tu prends la forme canonique du coup ?
Hé bien tu peux très bien créer une fonction prenant en paramètre le polynôme ( et pourquoi pas les racines, pas besoin de delta car si 2 racines, tu lui fait comprendre que delta > 0 ), et faisant du cas par cas :
SI 2 racines ALORS retourner (x-x')²
SINONSI 1 racine ALORS retourner a(x-x1)(x-x2)
SINON retourner ax² + bx + c
FINSI
Enfin pardon la forme canonique c'est a(x-alpha)²+beta.
Je m'y perd.
Je n'ai pas vraiment compris ce que tu as fais, ce que je te propose c'est déjà de te montrer mon programme abouti ![]()
Peut-être que tu n'ais simplement pas habitué au pseudo-code. x)
Mais oui montre moi ton programme s'il te plait, car je ne comprend pas comment ne peux tu pas arriver à la suite alors qu'elle me semble plus simple que ce que tu as déjà fait...
# -*- coding: cp1252 -*- #
from math import *
recommencer=1
while recommencer!=0:
print "Ce programme permet le calcul des racines d'une fonction du second degre."
print "Tel que ax²+bx+c=0"
A=input("a=")
B=input("b=")
C=input("c=")
discriminant=B*B-4*A*C
print "Delta=",discriminant
if discriminant <0:
print "On ne trouve aucune solution car delta est négatif."
if discriminant ==0:
print "On trouve une solution double car delta est égal à 0."
x3=-B/2*A
print "X=",x3
if discriminant >0:
print "On trouve deux solutions car delta est positif."
racine_carre_discriminant=sqrt(discriminant)
B=-B-racine_carre_discriminant
b=-B+racine_carre_discriminant
c=2*A
x1=B/c
x2=b/c
print "X1=",x1
print "X2=",x2
print "Cette fonction est désormais résolue."
print "Désirez-vous recommencer ?"
recommencer=input("Si oui, appuyez sur 1. \nSi non, appuyez sur 0.\n")
Ainsi ce que je veux, c'est de pouvoir proposer à l'utilisateur si il veut factoriser cette fonction, et si oui c'est de la faire
?
Le 19 septembre 2015 à 23:01:40 Anau a écrit :
1) ton encodage est pourri
2) pas pep8 du tout
3) print à la place de commentaires
4) pas de vérifications de typesC'est de la merde ton programme, prends une fonction de scipy plutôt, laisse le code aux grands
Au lieu de le prendre de haut, donne lui des conseils, il est qu'en terminale et il cherche quand même à apprendre, abruti ![]()
Merci Candy ![]()
Personne ne veut m'aider ![]()
Le 19 septembre 2015 à 23:01:40 Anau a écrit :
1) ton encodage est pourri
2) pas pep8 du tout
3) print à la place de commentaires
4) pas de vérifications de typesC'est de la merde ton programme, prends une fonction de scipy plutôt, laisse le code aux grands
mdr sa fé 4 an ke je program chui tro 1 tug
Sérieusement, les mecs comme toi m'énerve vraiment. ![]()
L'encodage et PEP8, je crois qu'en ISN, on en a un peu rien à foutre.
Pour le print à la place des commentaires, ok, ça peut paraitre judicieux de remplacer ( je rappelle pour les commentaire : triple guillemets pour borner un commentaire multi-lignes, un " # " pour du mono-ligne ).
Et la vérification de type, bah je ne sais pas, tu as abordé ça en cours luffy ? Un programme qui se doit de contrôler toutes les entrées possibles, tu as vu ?
Sinon je suis désolé mais je n'arrive pas à mieux expliquer les choses que je l'ai fait quelques posts plus haut... Attend la réponse de quelqu'un d'autre. :/
Vérifications de types ? Jamais vu x)
Juste je ne comprends ton Pseudo code en fait :/
Toujours pas d'aides ![]()
Je comprends pas ton soucis, tu as écrit toi-même ce qu'il fallait faire :
Quand delta > 0 : a(x-x1)(x-2)
Quand delta = 0 : a(x-x')²
(et quand delta < 0, impossible de factoriser)
Tu as déjà calculé a, x1, x2, donc tu as juste à afficher la réponse.
Tu voulais que ça fasse quelque chose de plus que juste dire "la forme factorisée est : bla" ?
ps: petit détail, "la fonction est désormais résolue" ça ne veut rien dire. Écris "les racines du polynôme ont été calculées" ou un truc du genre, si tu veux.
Bah non car à chaque fois il me met que le x de a(x-x1)(x-x2) n'est pas défini et mon problème est là..
Traceback (most recent call last):
File "C:\Users\Arthur\Desktop\Programmes\Projet equation second degre.py", line 30, in <module>
factor1=A(x-x1)(x-x2)
NameError: name 'x' is not definedVoilà ce qu'il met :/