Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#26 29-06-2021 13:29:55

RAZAFINDRAFINDRA Hercele
Invité

Re : Résolution d'un polynôme de degré n dans Q et dans Z

Bonjour!
Je suis vraiment  désolé pour mon absence sur la connexion pendant la semaine passé puisque j'ai eu l'examen pendant cette semaine.

#27 29-06-2021 14:26:44

RAZAFINDRAFINDRA Hercele
Invité

Re : Résolution d'un polynôme de degré n dans Q et dans Z

Salut!
Maintenant, je vous montre un programmation que j'ai fais mais je suis encore besoin d'aide. Puisque je veux tester mon polynôme à l'aide de mon liste de candidat mais je ne sais pas comment appeler mon polynôme? Mais je ne suis pas l'auteur du programme.
Voici le programme:

from math import*
from fractions import Fraction
from math import sqrt
def AvecSansMult(Coeff_Monomes,aster,i,dcl,mono):
    if aster==-1:
        Coeff_Monomes[i+dcl]=[-1,1][1-(mono[0]=="-")]
    else:
        Coeff_Monomes[i+dcl]=int(mono[:aster])
    return Coeff_Monomes
chaine='6+2*x^2-3*x^3'
L_chaine=chaine.split('+')
Liste_Monomes=[]
for bloc in L_chaine:
    if bloc==bloc.split("-"):
       Liste_Monomes.append(bloc)
    else:
        decoupe=bloc.split('-')
        for mono in decoupe:
            if mono!="":
                Liste_Monomes.append(mono)
for num,mono in enumerate(Liste_Monomes):
    i=chaine.find(mono)
    if i>0:
        if chaine[i-1]=="-":
            Liste_Monomes[num]="-"+Liste_Monomes[num]
Expos=[]
for mono in Liste_Monomes:
    if "x" not in mono:
        Expos.append(0)
    else:
        i=mono.find("x")
        if "^" not in mono:
            Expos.append(1)
        else:
            Expos.append(int(mono[i+2:]))          
expo_max,dcl=max(Expos),0
Coeff_Monomes=[3.14]*(expo_max+1)
for i,expo in enumerate(Expos):
    mono=Liste_Monomes[i]
    while i+dcl!=expo:
        Coeff_Monomes[i+dcl]=0
        dcl+=1
    if "x" not in mono:
        Coeff_Monomes[i+dcl]=int(mono)
    else:
        aster=mono.find("*")
        if "^" not in mono:
            Coeff_Monomes=AvecSansMult(Coeff_Monomes,aster,i,dcl,mono)
        else:
            Coeff_Monomes=AvecSansMult(Coeff_Monomes,aster,i,dcl,mono)
def Recherche_diviseurs(a0,an):
    D=[]
    for c in [a0,an]:
        fin=int(sqrt(abs(c)))
        L,L1=[],[]
        for j in range(1,fin+1):
            if c%j==0:
                L.append(j)
                L.append(c//j)
        for c in L:
            L1.append(-c)
            A=sorted(L1+L)
        D.append(A)  
    return D  
n=int(Coeff_Monomes[-1])
print ("Les Coefficients du polynôme (ordre des puissances croissantes de x) :")
print ("                ",chaine)
print ("                      sont :")
print ("p=",Coeff_Monomes)              
D=Recherche_diviseurs(Coeff_Monomes[0],Coeff_Monomes[-1])
print("\n")
print ("Diviseurs :")
print ("D(a0) =",D[0])
print("D(a"+str(n)+") =",D[-1])

l,g=[],0
for q in set(D[0]):
    for p in set(D[-1]):
        g=q/p
        l.append(g)
       
     
l=list(set(l))
print("Les candidants:")
print("DT=",l)

#28 29-06-2021 16:49:56

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 385

Re : Résolution d'un polynôme de degré n dans Q et dans Z

Re,

Pourquoi est-ce que je prendrais la suite de quelqu'un ?
De plus, tu m'as fait attendre 12 jours !!!
Ah oui,
Tu étais en examen :
1. Tu le savais avant
2. Combien de temps est-il nécessaire pour signaler que tu es absent pour cause d'examen ? 2 min ou 1 h ?

Pourquoi offrirais-je ce que j'ai fait à quelqu'un qui, visiblement, n'était pas satisfait.
En outre, je me suis efforcé de n'utiliser que des instructions basiques sauf pour l'instruction D[-1] et peut-être les "\n" dans les print (ce n'est pas le cas de ce qu'on t'a fait) faciles à comprendre sauf aussi pour l'affichage des racines où j'ai tenu à être satisfait de ma présentation.

Ce que j'ai fait n'a pas plu à celui qui t'a fait ce que tu présentes : tu as recopié ce que t'a fait une autre personne sans probablement comprendre ce que moi j'ai fait et ce que lui a fait et pourquoi, c'était plus facile que de répondre à mes questions...

Si tu as préféré que quelqu'un reprenne le début, cela veut dire que mon travail n'a pas trouvé grâce à tes yeux, donc pourquoi est-ce que je je donnerai satisfaction : assume donc tes choix !

Moi, je me suis efforcé d'améliorer encore mon code (c'est fait. N-B : les calculs se font toujours avec des fractions, mais au lieu d'afficher Fraction(3,7) - par exemple, j'affiche simplement 3/7 parce que j'ai trouvé l'affichage plus clair...) pour mon plaisir personnel, et lorsque je serai satisfait à 99%, je le mettrai en ligne. Et il fonctionne déjà sous Linux en plus de Windows sans rien changer...

Résultat :



      ******************************
      *  Résolution des Polynômes  *
      *         dans Z et Q        *
      ******************************


Degré du polynôme : 3

Entrer le coefficient a0 : -30
Entrer le coefficient a1 : -97
Entrer le coefficient a2 : 34
Entrer le coefficient a3 : 21

Votre Polynôme est :
P(X) = 21X^3+34X^2-97X-30

Diviseurs :
D(a0) = [-30, -15, -10, -6, -5, -3, -2, -1, 1, 2, 3, 5, 6, 10, 15, 30]
D(a3) = [-21, -7, -3, -1, 1, 3, 7, 21]

DT =
{-30, -15, -10, -6, -5, -30/7, -10/3, -3, -15/7, -2, -5/3, -10/7, -1, -6/7, -5/7, -2/3, -10/21, -3/7, -1/3, -2/7, -5/21, -1/7, -2/21, -1/21, 1/21, 2/21, 1/7, 5/21, 2/7, 1/3, 3/7, 10/21, 2/3, 5/7, 6/7, 1, 10/7, 5/3, 2, 15/7, 3, 10/3, 30/7, 5, 6, 10, 15, 30}

 Test des Racines éventuelles :
P(-3)     = 0. Solution dans  Z : X = -3
P(-2/7)   = 0. Solution dans  Q : X = -2/7
P(5/3)    = 0. Solution dans  Q : X = 5/3

Le code final qui produit ce résultat occupe 90 lignes et il est aéré, donc lisible sans trop d'efforts, le code que tu as posté occupe 87 lignes, il est très dense et il est bien loin d'être terminé.

Quelques conseils :
Si tu as plusieurs définitions de fonction, regroupe-les au début après les import mais après les import saute une ligne, comme entre chaque fonction, mets le code principal de traitement de l'information  après les fonctions.
Ce code principal peut se décomposer en plusieurs parties : saute une ligne entre chaque partie.
Ton programme sera plus clair, tu t'y retrouveras mieux...

@+

[EDIT]
Je viens de trouver une faille dans ton algorithme (et une imperfection dans l'affichage du polynôme dans mon programme)...
Soit $P(x)=x^3+2x^2+x$ :
* Comment vas-tu trouver la racine $x=0$ ? (là, je sais)
* Comment vas-tu trouver $ x_1=-1$ (là, je pense savoir)
* Comment vas-tu trouver que x_2=x_3 = -1$ : -1 racine double ?

Dernière modification par yoshi (30-06-2021 07:53:18)

Hors ligne

#29 30-06-2021 15:43:38

RAZAFINDRAFINDRA Hercele
Invité

Re : Résolution d'un polynôme de degré n dans Q et dans Z

Bonjour!
Merci, j'ai pris la programmation ce que vous m'envoyez. Mais j'ai besoin de programme comme je vous ai envoyé, c'est à dire comment appeler mon polynôme si j'aurai fait un test de racine éventuelle. Je m'intéresse beaucoup ce programme puisque je l'ai besoin à introduire à l' interface. Excusez moi, je vous demande comment appeler une expression du polynôme à l'interface? Merci d'avance!

#30 30-06-2021 17:18:11

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 385

Re : Résolution d'un polynôme de degré n dans Q et dans Z

Bonsoir,

Excusez moi, je vous demande comment appeler une expression du polynôme à l'interface?

Désolé, je ne comprends pas ce que tu veux dire.

@+

Hors ligne

#31 30-06-2021 20:30:17

Roro
Membre expert
Inscription : 07-10-2007
Messages : 1 801

Re : Résolution d'un polynôme de degré n dans Q et dans Z

Bonsoir Yoshi,

Je suis la discussion depuis quelque temps avec amusement et j'ai l'impression que la demande est limpide :
"Est ce que tu pourrais donner le code complet à notre ami ?"

Je pense que ça le fera énormément progresser d'avoir une version qui fonctionne sans comprendre pourquoi ! (à prendre au second degré)

A mon avis, tu perds ton temps car il ne veut pas comprendre (et ne veut pas prendre le temps) ce que tu essayes de lui expliquer étape par étape...

Roro.

Hors ligne

#32 01-07-2021 07:43:28

LEG
Membre
Inscription : 19-09-2012
Messages : 790

Re : Résolution d'un polynôme de degré n dans Q et dans Z

Salut :
e@Roro , oui mais tu sais que notre ami Yoshi aime bien pousser la chose jusqu'au bout...
Ça fait partie de ses qualités à expliquer point par point un programme, afin de l'optimiser, ou d'être sûr que la personne à compris, dans le cas d'un exercice à rendre à son prof...
Mais il ne lui donnera pas le programme, d'autant que c'est un devoir... ça tu peux en être sûr...

Hors ligne

#33 01-07-2021 08:30:12

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 385

Re : Résolution d'un polynôme de degré n dans Q et dans Z

Salut Roro,

C'est bien l'impression que j'en ai aussi.
Mais il a beau changer de demande en réponse à mes questions (pour éviter d'y répondre), je ne changerai pas de position : je veux une réponse à mes questions.

@Hercèle
Tant que tu n'auras pas répondu aux questions déjà posées et à celles qui viendront après, tant que je ne serai pas satisfait de tes réponses, je ne te donnerai pas mon programme...
Ça t'avancerait à quoi ?

@+

Hors ligne

#34 01-07-2021 15:34:32

RAZAFINDRAFINDRA Hercele
Invité

Re : Résolution d'un polynôme de degré n dans Q et dans Z

Bonjour!
Oui, je réfléchirai un peu votre question, et à demain je la répondrai.

#35 02-07-2021 16:22:38

RAZAFINDRAFINDRA Hercele
Invité

Re : Résolution d'un polynôme de degré n dans Q et dans Z

Bonsoir!
Voici les réponses  que fait. Merci!


* Combien vaut fin ?
Ici c=40.
Donc on a : √40  = 6,324.
Or fin prend l’entier de  √40.
Donc fin=6

* Comment s'écrit alors la ligne for j in range(1,fin+1) ? Que fait-elle ?
La ligne j in range(1, fin+1) s’écrit comme :
Pour  j varie de 1 à 7, cela fait l’itération pour j=1 jusqu’à j=7 .

* Que signifie if (si) c%%j == 0: ?
If c%j==0 , cela signifie que  j = 0 mod(c), c’est dire le reste de cette division est égale 0.
Donc 40/1=40 ; 40/2=20 ; 40/3=13,3333 ; 40/4=10 ; 40/5=8 ; 40/6=6,666 ; 40/7=5,714

* Pourquoi est-ce que je stocke j ?
On stocke j, parce que, à chaque fois j qui vérifient la condition précédente, ce sont des diviseurs de 40.
On stocke donc L=[1 ; 2 ; 4 ; 5]

* Qu'est-ce que c//j ?
* Pourquoi est-ce que je le stocke aussi seulement si  j² est différent de c (avec l'exemple choisi : si j² n'est pas égal à 40) ?
On prend encore la condition pour obtenir tout les diviseurs de 40:
si j*j != 40, alors on stocke j qui donne la valeur exacte.
On sait que toute les carrée de j sont différent de 40, donc il reste à calculer les j qui donnent les valeurs exacte.
En effet :
40/1=40 ; 40/2=20 ; 40/3=13,3333 ; 40/4=10 ; 40/5=8 ; 40/6=6,666 ; 40/7=5,714
Donc on a : L=[40 ; 20 ; 10 ; 8]

D’où L=[1 ; 2 ; 4 ; 5 ; 8 ; 10 ; 20 ; 40]
 

#36 02-07-2021 17:17:21

LEG
Membre
Inscription : 19-09-2012
Messages : 790

Re : Résolution d'un polynôme de degré n dans Q et dans Z

Bonjour
@RAZAFINDRAFINDRA : tu devrais relire les explications que te donne Yoshi au post  #20 , page 1
concernant les questions  qu sujet de cette fonction :


for j in range(1,fin+1):
            if c%j==0:
                L.append(j)
                L.append(c//j)      
        L=list(set(L))
 

 

ainsi que


for c in [a0,an]:
        c= abs(c)
        fin=int(sqrt(c))
        L,L1=[],[]
        for j in range(1,fin+1):
            if c%j==0:
                L.append(j)
                if j**2 !=c:
                    L.append(c//j)
 

sauf erreur il te demande d'expliquer  la fonction ; for j in range(1,fin+1):

et ce que veut dire "" ces sous fonctions "" :

if c%j==0:
                L.append(j)

ainsi que:

if j**2 !=c:
                   L.append(c//j)

donc que veut dire (c//j)  ou si tu veux , qu'est ce que l'on prend comme valeur ?

ta citation :

Donc 40/1=40 ; 40/2=20 ; 40/3=13,3333 ; 40/4=10 ; 40/5=8 ; 40/6=6,666 ; 40/7=5,714

Ha bon ? les restes de 40 par 7 , par 6 , par 3 , sont égal 0 ...?

Dernière modification par LEG (02-07-2021 17:33:01)

Hors ligne

#37 02-07-2021 18:38:24

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 385

Re : Résolution d'un polynôme de degré n dans Q et dans Z

Re,

Question :
* Qu'est-ce que c//j ?
   Réponse ?

Pour  j varie de 1 à 7, cela fait l’itération pour j=1 jusqu’à j=7

1. Non, relis ce que je t'ai écrit sur les boucles for.
2. Qu'est-ce qui se passerait pour le nombre 36 si ne n'écrivais pas : for j in range(1,fin): ?
    Pourquoi est-ce que je commence la boucle à 1 et non pas à 0 ?

Ma question était :
* Pourquoi est-ce que je le stocke aussi seulement si  j² est différent de c (avec l'exemple choisi : si j² n'est pas égal à 40) ?
Tu réponds:

On prend encore la condition pour obtenir tout les diviseurs de 40:
si j*j != 40, alors on stocke j qui donne la valeur exacte.
On sait que toute les carrée de j sont différent de 40, donc il reste à calculer les j qui donnent les valeurs exacte.
En effet :
40/1=40 ; 40/2=20 ; 40/3=13,3333 ; 40/4=10 ; 40/5=8 ; 40/6=6,666 ; 40/7=5,714
Donc on a : L=[40 ; 20 ; 10 ; 8]

D’où L=[1 ; 2 ; 4 ; 5 ; 8 ; 10 ; 20 ; 40].

La réponse n'est pas satisfaisante : tu es resté avec 40 et tu ne t'es pas demandé ce qui se passerait avec au lieu de 40, avec 36 par exemple.

Donc je répète ma question et je la précise :
- ici c =40
- Je précise : dans la phrase "je le stocke aussi", le est complément d'objet direct du verbe stocker, il est mis pour c//j

Ma question :
* Pourquoi est-ce que je stocke aussi c//j seulement si  j² est différent de c (avec l'exemple choisi : si j² n'est pas égal à 40) ?
* Sinon que se passerait-il si c=36 ?

Donc on a : L=[40 ; 20 ; 10 ; 8]

?
* Non ! Que contient très précisément L à la sortie de la boucle for avec l'exemple c=40.
* Pourquoi est-ce que j'ai dit que j'ai dit que fin = c//2 était une "erreur" et que je l'ai replacé par c=sqrt(abs(c)) ?
* pourquoi abs(c)  valeur absolue de c ?

J'arrête-là sinon, il y a trop de questions à la fois...

N-B
j'ai dû modifier le début : ma boucle d'affichage du polynôme ne respectait pas les règles de simplification d'écriture de l'Algèbre.
Maintenant, c'est réglé.
Ensuite, j'ai réglé le cas de la racine du Polynôme égale à 0,
Et dans ce cas précis,  j'ai aussi réussi à trouver les autres racines dans Z et Q quand elles existent, ce que ton algorithme ne permet pas : je l'ai corrigé.

@+

@LEG : j'ai abandonné le list(set(L)) : ça ne marchait pas toujours avec les fractions et je n'avais pas envie de me casser la tête à trouver pourquoi... J'ai fait autrement !
Et puis, c'était un peu compliqué...

Hors ligne

#38 05-07-2021 13:41:01

RAZAFINDRAFINDRA Hercele
Invité

Re : Résolution d'un polynôme de degré n dans Q et dans Z

Bonjour!
Alors, dans votre question, moi je connais le principe de cet algorithme mais je n'arrive plus à l'expliquer bien.
Excuse moi, je serai absent depuis demain jusqu'à mercredi, parce que j'aurai des examens pendant ces jours.
Merci!

#39 05-07-2021 14:22:56

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 385

Re : Résolution d'un polynôme de degré n dans Q et dans Z

Bonjour,

Précision, je n'ai pas posé qu'une seule question.

Alors, dans votre question, moi je connais le principe de cet algorithme mais je n'arrive plus à l'expliquer bien.

je n'arrive plus à l'expliquer bien : c'était supposé te faire prendre en pitié ? Si oui, c'est une erreur !

Un grand écrivain français, Nicolas BOILEAU (1636 – 1711) a écrit :
                                                           Ce qui se conçoit bien s'énonce clairement
                                                           Et les mots pour le dire arrivent aisément.

Conclusion : tu ne l'a pas bien compris !
C'est vrai que c'était difficile (!) : mes élèves de 5e (12 ans) savaient l'utiliser...
:

Je reprends l'exemple de 40
1, 40   2, 20   4, 10  5, 8  |  8, 5  Je ne vais pas plus loin... Pourquoi ?
N'es-tu même pas capable de faire ce travail-là tout seul ?

@+

[EDIT]
A raison d'une réponse tous les 3 jours (si elle est satisfaisante !!!), pour 30 questions, tu en as encore pour 3 mois minimum...

Dernière modification par yoshi (05-07-2021 17:22:42)

Hors ligne

#40 10-07-2021 08:15:13

RAZAFINDRAFINDRA Hercele
Invité

Re : Résolution d'un polynôme de degré n dans Q et dans Z

Bonjour!
Désolé si je commis l'erreur pour l'expression française, de tout façon je ne suis plus capable de parler en français parce que je viens d'ici à Madagascar. Mais maintenant, je suis entrain d'améliorer petite à petite mon langage.

Je reprends l'exemple de 40
1, 40   2, 20   4, 10  5, 8   Pourquoi ?
 

Parce que, les nombres s'arrangent deux à deux distincte qui donnent leurs multiple égal 40. Donc tous ces nombres sont des diviseurs de 40.

#41 10-07-2021 08:42:43

RAZAFINDRAFINDRA Hercele
Invité

Re : Résolution d'un polynôme de degré n dans Q et dans Z

Salut!
Sur mon sujet, j'aurai presque 1 mois plus tard, il devrait déposer à mon examinateur. Alors est ce que vous pourrez m'aider pour la fin du programme? Si c'est possible, aidez moi

#42 10-07-2021 08:50:54

LEG
Membre
Inscription : 19-09-2012
Messages : 790

Re : Résolution d'un polynôme de degré n dans Q et dans Z

RAZAFINDRAFINDRA Hercele a écrit :
Je reprends l'exemple de 40
1, 40   2, 20   4, 10  5, 8   Pourquoi ?
 

Parce que, les nombres s'arrangent deux à deux distincte qui donnent leurs multiple égal 40. Donc tous ces nombres sont des diviseurs de 40.

Sauf erreur, Je suppose que Yoshi te demande de dire ou d'expliquer qu'elle est la fonction qui permet  de calculer les 4 diviseurs j de C après la boucle for
pour en déduire L = 1, 40   2, 20   4, 10  5, 8  et donc il ne va pas plus loin....

ÇA TE SERT À QUOI de donner un programme que tu ne peux expliquer ni de programmer l'algorithme qui est le sujet demandé par ton examinateur ...?

Tu vas demander à chaque fois que l'on fasse tes devoirs pour les donner à tes profs...?

Tu connais soit disant ton algorithme... Ok ; alors que fait en détail point par point la fonction :


 L,L1=[],[]
        for j in range(1,fin+1):
            if c%j==0:
                L.append(j)
 

et que veut dire :   if c%j==0: ?

Dernière modification par LEG (10-07-2021 09:02:36)

Hors ligne

#43 10-07-2021 15:15:05

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 385

Re : Résolution d'un polynôme de degré n dans Q et dans Z

Re,

Sur mon sujet, j'aurai presque 1 mois plus tard, il devrait déposer à mon examinateur.

Donc, tu disposes d'un mois supplémentaire pour donner ton travail à ton examinateur ?
C'est bien, mais en répondant à mes questions seulement une fois tous les 5 jours tu vas en avoir pour plusieurs mois avant que je sois satisfait et que tu puisses avoir ce que j'ai fait...

Donc, essaie de mieux réfléchir et d'être un peu plus souvent présent, si tu veux avoir mon programme avant la fin du délai., sinon, tu ne pourras pas l'avoir : je refuse que ton examinateur puisses penser que tu essaies de le tromper...

Alors est ce que vous pourrez m'aider pour la fin du programme ?

Mon programme, comme tu as pu le constater est terminé, à un petit détail près : il ne fonctionne que pour un polynôme de degré supérieur ou égal à 2 (j'ai commencé à mettre chaque différente phase à l'intérieur d'une fonction et heureusement dans le programme actuel ces phases sont bien séparées dans le code). Lorsque j'aurai fini, je rajouterai 3 à 4 lignes permettant de traiter le cas du binôme du 1er degré du type $aX+b$...

Tu n'as pas assez de temps pour apprendre Python et être capable d'écrire la suite que tu demandes.
Si tu peux trouver quelqu'un qui te l'écrives de A à Z et qui accepte de te le donner sans que tu comprennes ce qui a été fait, c'est à dire que que tu sois capable de l'expliquer, alors  tu n'auras fait aucun progrès mais ça te regarde !

Ne compte pas sur moi, je te l'ai déjà dit, tu serais facilement pris en défaut par ton examinateur et tu aurais la note la plus basse avec le
risque d'échouer à ton examen...

Je reprends l'exemple de 40
Je t'ai écrit :

1, 40   2, 20   4, 10  5, 8 | 8, 5 Je ne vais pas plus loin... Pourquoi ?

Pourquoi ai-je écrit : je ne vais pas plus loin ?
J'ai coloré en rouge ce qui te permettait de donner une réponse complète.
Pourquoi as-tu négligé cette partie ? Je ne l'ai pas écrite parce que j'ai fait une erreur, mais volontairement pour te mettre sur la voie....

Alors
1. Oui, ce sont des paires de diviseurs.
    c= 40

   Et la boucle for j s'arrête à 6

   J'ai rayé la paire 8,5 pourquoi ?
   Parce que la boucle for j in range(1, fin+1): s'arrête avant.

   Pourquoi ?
   Parce que fin = sqrt(abs(c)) soit 6. Donc que la boucle cherche si j=1,2,3,4,5,6 sont des diviseurs de 40.
   Dans ce cas précis, la boucle peut se traduire par    for j in range(1,7):
   Même si je demande que la boucle commence à 1, la boucle démarre normalement à 0 (j'élimine le problème de la division par 0 !)
   Si 40 se divise par un nombre supérieur à 6, alors on a déjà trouvé l'autre élément de la paire, donc inutile d'aller plus loin.

   Et c'est grave si on va plus loin, jusqu'à 40 par exemple ?
   Pas vraiment, mais tu auras les diviseurs en double, et tu devras les supprimer après...
   Y penser avant t'évite du travail inutile après.

2. J'ai aussi demandé
    Pourquoi comme fin=int(sqrt(40))=6  racine carrée entière de 40, je prends fin = 6+1 comme fin de boucle (et non 6) ?
    Ça marchait aussi avec 40 (la boucle s'arrêtait à 5)...
    Mais le souci est que tu n'écris pas un algorithme pour qu'il fonctionne avec 40 mais avec n'importe n'importe quel nombre !

    Qu'est-ce qui se passerait pour c=36 si tu prenais fin=6 et non 7 ?
    J'attends ta réponse...

3. Dans le code :

    for j in range (1,fin +1):
        if c%j==0:
            L.append(j)
            if j**2!=c:
                L.append(c//j)

    Si j est un diviseur de c je le stocke dans la liste L. D'accord.   

    Ensuite pourquoi si et seulement si j**2 !=c alors je stocke c//j dans L ?
    J'attends ta réponse...

    Pourquoi c//j et non c/j
    Un essai avec Python répond à la question 40/5 = 8.0 et 40//5 = 8

    C'est bien le même résultat, non ?  
    Oui et Non. Pour Python, le quotient de la division / est un nombre à virgule, tandis que // donne le quotient entier (quotient euclidien).
    Et donc comme c est entier, si j divise c alors c//j est le quotient entier exact...

    Quel est l'intérêt ?
    Ces diviseurs seront utilisés ensuite soit comme numérateurs, soit comme dénominateurs par les Fraction du module fractions.
    Or, en Python, numérateur et dénominateur d'une fraction sont des nombres entiers...
    Conséquence : si tu utilises des nombres à virgule : le programme s'arrête et affiche un message d'erreur...

4. Que contient exactement L (avec c= 40) à la sortie de la boucle (donne-moi son contenu exact) ?
    J'attends ta réponse...

Commences-tu à comprendre que tu dois réfléchir à ce que tu écris et ses conséquences immédiates et futures ?
En français, on dit : il faut voir plus loin que le bout de son nez !

J'attends les réponses à mes questions.
Moi, j'ai tout mon temps... Mais toi, non !
Alors n'attends pas encore 5 jours, parce que je ne vais à continuer longtemps dans ces conditions !

@+

[EDIT]
2 jours de perdus !
Alors je le redis...

Si tu essaies de m'avoir à l'usure (if you're trying to wear me down), tu perds ton temps (you're wasting time)...

Lorsque tu devras rendre ton travail, si tu n'as pas répondu à mes questions de façon satisfaisante : tu n'auras pas mon programme !
Je ne changerai pas d'avis...

Est-ce que c'est plus clair, cette fois ?

Dernière modification par yoshi (12-07-2021 16:50:36)

Hors ligne

#44 27-07-2021 18:28:43

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 385

Re : Résolution d'un polynôme de degré n dans Q et dans Z

Re,

Voilà, j'ai terminé, je pense avoir humainement tout envisagé : je suis loin des malheureuses 90 lignes du début.
J'en ai 100 de plus...


      ******************************
      *  Résolution des Polynômes  *
      *         dans Z et Q        *
      ******************************


Degré du polynôme (entier naturel attendu) : 5

Entrer le coefficient a0 (entier relatif attendu) : 0
Entrer le coefficient a1 (entier relatif attendu) : 0
Entrer le coefficient a2 (entier relatif attendu) : -30
Entrer le coefficient a3 (entier relatif attendu) : -97
Entrer le coefficient a4 (entier relatif attendu) : 34
Entrer le coefficient a5 (entier relatif attendu) : 21

  Votre Polynôme est :
P(X) = 21X^5+34X^4-97X^3-30X^2

  /!\ Factorisation possible par X^2, on prend -30 pour a0 :
P(X) = X^2(21X^3+34X^2-97X-30)

  Diviseurs de -30 et 21 :
D(a0) = [-30, -15, -10, -6, -5, -3, -2, -1, 1, 2, 3, 5, 6, 10, 15, 30]
D(a5) = [-21, -7, -3, -1, 1, 3, 7, 21]

  Racines Potentielles à tester :
{-30, -15, -10, -6, -5, -30/7, -10/3, -3, -15/7, -2, -5/3, -10/7, -1, -6/7, -5/7, -2/3, -10/21, -3/7, -1/3, -2/7, -5/21, -1/7, -2/21, -1/21, 1/21, 2/21, 1/7, 5/21, 2/7, 1/3, 3/7, 10/21, 2/3, 5/7, 6/7, 1, 10/7, 5/3, 2, 15/7, 3, 10/3, 30/7, 5, 6, 10, 15, 30}

  Affichage des Racines éventuelles :
P(-3)     = 0. Solution dans  Z : X = -3
P(-2/7)   = 0. Solution dans  Q : X = -2/7
P(0)      = 0. Solution dans  Z : X = 0
P(5/3)    = 0. Solution dans  Q : X = 5/3


     Un autre Essai (O/N) ?  

17 jours plus tard : toujours aucune nouvelle, mais p'têt ben qu'il va se pointer en disant la bouche en cœur : si, si ! Je suis sérieux ! J'apprends toujours. Mais j'étais en vacances ou internet a sauté chez moi ou c'est mon ordinateur qui m'a lâché ou...

Je ne compte plus - et je me répète - sur notre ami.
J'ai donc travaillé pour moi et pour le plaisir : je mettrai le code en ligne d'ici un bon mois pour être sûr qu'il ne puisse en profiter...

@+

Hors ligne

#45 28-07-2021 08:06:45

LEG
Membre
Inscription : 19-09-2012
Messages : 790

Re : Résolution d'un polynôme de degré n dans Q et dans Z

Salut Yoshi : Au moins tu t"es fait plaisirs....
Car je pense qu'il n'a aucune envie de vouloir apprendre par lui même , probablement de par son incompétence dans ce domaine qui demande de bosser.
@A+ LEG

Hors ligne

#46 28-07-2021 08:40:20

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 385

Re : Résolution d'un polynôme de degré n dans Q et dans Z

RE,

C'est clair que ça demandait de l'apprentissage parce que les bases étaient loin d'être là et le temps dont il disposait était vraiment trop court pour ça : : si on ajoute en plus sa disponibilité et/ou son implication, c'était mission impossible...
Dommage ! J'étais prêt à lui faire un "cours accéléré" pour lui permettre de comprendre ce que j'ai fait, pas de le reproduire, ni de prétendre l'avoir fait, parce que là, il se serait plombé d'entrée et pire aurait exclu pour mensonge...
C'est pourquoi, je lui avais dit de jouer cartes sur table et de dire que le script n'était pas de lui, mais qu'il pouvait expliquer chaque étape...

Son algorithme marche, parce que je l'ai rectifié, sinon, il y avait des trous énormes dans sa raquette et notamment le cas que j'ai mis en ligne en guise de démo, en cas d'absence de terme indépendant induisant une factorisation élémentaire...
J'ai voulu afficher la factorisation : à la main, ça marchait nickel, avec Python cet affichage était très souvent incohérent, toutes les solutions que j'utilisais, corrigeaient les pbs d'un côté et en créaient d'autres...
Rien que ça, j'y ai travaillé une dizaine de jours par intermittence.
Je pense que ce genre de problème d'affichage pouvait se régler plus simplement par l'emploi des Regex : mais alors ça, c'est une prise de tête épouvantable, très peu nombreux sont ceux qui maîtrisent.
Et heureusement un soir, je me suis souvenu que "X" ou "x" n'étaient pas la même lettre, après en 48 h, c'était réglé.
J'ai passé tout le Polynôme en minuscules, j'ai opéré les correctifs d'exposant en repassant en majuscules.
Il restait alors la présence éventuelle de x et de X^1 et/ou de X^0 : ces trous dans la raquette (c'était normal) ont demandé une analyse fine pour que le script détecte leur présence et finisse le boulot... Je suis sûr à 99% qu'il n'y a plus d'erreur, mais il reste 1% de doute !

Si tu le veux bien, je te l'enverrais, pour que tu le testes et que tu me dises si tu trouves des bugs (plantages) dans le déroulement des opérations.

@+

Hors ligne

#47 28-07-2021 12:42:33

LEG
Membre
Inscription : 19-09-2012
Messages : 790

Re : Résolution d'un polynôme de degré n dans Q et dans Z

Re Bien sûr pas de problème tu as mon adresse mail, je suppose aussi qu'il y a des paramètres à entrer ... pour faire différents test .

Car je vois que dans ton résultat affiché il demande : entrer le coefficient pour a0, a1 ....a5
je suppose que c'est pour un polynôme de degré 5 , comment tu choisis  les coefficients ....

Dernière modification par LEG (28-07-2021 12:57:55)

Hors ligne

#48 28-07-2021 18:03:45

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 385

Re : Résolution d'un polynôme de degré n dans Q et dans Z

Re,

Je ne voulais pas t'engager là-dedans sans savoir d'abord ce que je dois t'expliquer (en Maths) pour comprendre ce qui se fait.
Alors voilà...

Les Polynômes traités sont un peu comme des fonctions en informatiques.
J'appelle ce polynôme $P(x)$, lire P de x, c'est son nom générique. Si je remplace $x$ par un nombre, ce polynôme va me rendre une valeur qu'il va calculer...
Ces Polynômes s'écrivent (par ordre de puissances décroissantes) tous ainsi ::
$P(x)=a_nx^n+a_{n-1}x^{n-1}+a_{n-2}x^{n-2}+\cdots+a_2x^2+a-1x^1+a_0x^0$
Sauf que, par convention,
On n'écrit pas $x^1$ mais $x$, et "rien"à la place de $x^0$ (en fait $x^0=1$ et $a_0 x^0=a_0\times x^0=a_0\times 1 = a_0$).
Donc l'écriture générale est :
$P(x)=a_nx^n+a_{n-1}x^{n-1}+a_{n-2}x^{n-2}+\cdots+a_2x^2+a_1x+a_0$
$a_0,\, a_1\, a_2\cdots a_n$ sont des coefficients donnés qui sont des Nombres entiers relatifs, c'est à dire des nombres entiers avec un signe ...

Dans ce que je propose, c'est toi qui les choisit via une boucle.
C'est pourquoi je commence par te demander quel est le degré du polynôme.
Par exemple
$P(x)=2x-3$ est de degré 1 parce que $2x-3= 2x^{1}-3$
$P(x)=x^3+3x^2+3x+1$ est de degré 3.

Donc, le script te demande le degré du polynôme et ensuite si tu as répondu 3, il va te demander de choisir les valeurs de
$a_0,\,a_1,\,a_2\;$et $a_3$ :
Le but du jeu est que le script te dise si le polynôme $P(x)$ que tu as choisi a des racines entières ou fractionnaires.

Une racine c'est la valeur qui annule $P(x)$ si tu donnes à $x$ cette valeur...

Ainsi, avec
$P(x)=2x-3$,
   $P(1) = 2\times 1-3= 2-3=-1$, 1 n'est pas une racine de ce Polynôme
   $P\left(\frac 3 2\right) = 2\times \frac 3 2 -3 = 3-3 =0$. Donc $\frac 3 2$ est une racine de ce binôme. C'est même LA racine...
   un Polynôme de degré $n$ a au maximum $n$ racines, parfois, il n'en a pas du tout

$P(x)=3x^3+2x^2-12x-8$
  Polynôme de degré 3. A la question sur le degré, je réponds 3.
  Il va donc me demander
  $a_0$ je réponds -8
  $a_1$ je réponds -12
  $a_2$ je réponds 2
  $a_3$ je réponds 3

Le reste se déroule sans toi, il affiche le Polynôme correspondant, puis les calculs  :



      ******************************
      *  Résolution des Polynômes  *
      *         dans Z et Q        *
      ******************************


Degré du polynôme (entier naturel attendu) : 3

Entrer le coefficient a0 (entier relatif attendu) : -8
Entrer le coefficient a1 (entier relatif attendu) : -12
Entrer le coefficient a2 (entier relatif attendu) : 2
Entrer le coefficient a3 (entier relatif attendu) : 3

  Votre Polynôme est :
P(X) = 3X^3+2X^2-12X-8

  Diviseurs de -8 et 3 :
D(a0) = [-8, -4, -2, -1, 1, 2, 4, 8]
D(a3) = [-3, -1, 1, 3]

  Racines Potentielles à tester :
{-8, -4, -8/3, -2, -4/3, -1, -2/3, -1/3, 1/3, 2/3, 1, 4/3, 2, 8/3, 4, 8}

  Affichage des Racines éventuelles :
P(-2)   = 0. Solution dans  Z : X = -2
P(-2/3) = 0. Solution dans  Q : X = -2/3
P(2)    = 0. Solution dans  Z : X = 2


     Un autre Essai (O/N) ?

     C'est bon parce que $P(x)=3x^3+2x^2-12x-8=(x-2)(x+2)(3x+2)$ (je l'ai fabriqué pour)
     et que
     *  Si je remplace x par 2, j'obtiens $P(2) = 0\times 4 \times 8 = 0$
     * Si je remplace x par -2, j'obtiens $P(-2) = -4 \times  0 \times -4 = 0$
     * Si je remplace x par $-\frac 3 2$, j'obtiens $P\left(-\frac 3 2\right) = -\frac 7 2\times \frac 1 2 \times 0 = 0$

Si j'essaie de l'attraper avec le Polynôme du 6e degré $P(x)=3x^6+2x^5-12x^4-8x^3$
1. Je dois rentrer de gré 6
    puis 0, 0, 0, -8, -12, 2, 3...
2.  Puis le programme "voit" qu'il y a une factorisation évidente, il trouve les mêmes racines + le zéro :
   



      ******************************
      *  Résolution des Polynômes  *
      *         dans Z et Q        *
      ******************************


Degré du polynôme (entier naturel attendu) : 6

Entrer le coefficient a0 (entier relatif attendu) : 0
Entrer le coefficient a1 (entier relatif attendu) : 0
Entrer le coefficient a2 (entier relatif attendu) : 0
Entrer le coefficient a3 (entier relatif attendu) : -8
Entrer le coefficient a4 (entier relatif attendu) : -12
Entrer le coefficient a5 (entier relatif attendu) : 2
Entrer le coefficient a6 (entier relatif attendu) : 3

  Votre Polynôme est :
P(X) = 3X^6+2X^5-12X^4-8X^3

  /!\ Factorisation possible par X^3, on prend -8 pour a0 :
P(X) = X^3(3X^3+2X^2-12X-8)

  Diviseurs de -8 et 3 :
D(a0) = [-8, -4, -2, -1, 1, 2, 4, 8]
D(a6) = [-3, -1, 1, 3]

  Racines Potentielles à tester :
{-8, -4, -8/3, -2, -4/3, -1, -2/3, -1/3, 1/3, 2/3, 1, 4/3, 2, 8/3, 4, 8}

  Affichage des Racines éventuelles :
P(-2)   = 0. Solution dans  Z : X = -2
P(-2/3) = 0. Solution dans  Q : X = -2/3
P(0)    = 0. Solution dans  Z : X = 0
P(2)    = 0. Solution dans  Z : X = 2


     Un autre Essai (O/N) ?

Il n'y a pas d'autres manips à faire que de répondre aux questions...
$\mathbb Z$ regroupe tous les nombres entiers relatifs (entiers positifs et négatifs
$\mathbb Q$ regroupe tous les nombres entiers relatifs + tous ceux qui s'écrivent comme une fraction avec numérateur et dénominateur dans $\mathbb Z$.
Les résultats peuvent n'être ni dans $\mathbb Z$, ni dans $\mathbb Q$
C'est ce qui arriverait avec $P(x)=x^2-3$ dont les racines sont $-\sqrt 3$ et $\sqrt 3$ qui ne peuvent s'écrire comme une fraction...
Ces nombres-là sont dans $\mathbb R$, qui regroupe $\mathbb Z$, $\mathbb Q$ + les racines carrées, cubiques... non entières, $\pi$, $\mathrm e$ (exponentielle) et bien d'autres...

$P(x)=x^2+1$ n'a pas du tout de racines (sauf en utilisant les nombres complexes donc n'apparaissent pas...
C'est bon, t'as tout digéré ?
Quelque chose de pas clair avant de te lancer ?

Moi, je suis en Python v3.5, toi en 3.9 : ça m'intéresse de savoir si ça fonctionne en v3.9...

@+

Hors ligne

#49 29-07-2021 15:32:00

LEG
Membre
Inscription : 19-09-2012
Messages : 790

Re : Résolution d'un polynôme de degré n dans Q et dans Z

Re @Yoshi il fonctionne parfaitement dans ma version 3.9 sous linux c'est même très rapide

Tes explications sont très claires et le programme fonctionne très bien je me suis amusé avec degré 10.

Il n'indique aucune erreur donc tout est bon ...

Je suppose que cela devrait intéresser des étudiants dans ce domaine, car le programme de cet algorithme n'est pas évident à écrire...

["" je peaufine toujours mes explications sur les fichiers relatif à la conjecture de Goldbach dans ce forum....
car certaines explications sont pas très claires ou mal définies sur la fonction de l'algorithme de Goldbach... avec deux jeunes à l'UQUAM de Montréal.

Pour l'instant, même si ma preuve de l'impossibilité d'infirmer la conjecture est convaincante elle n'est pas suffisamment rigoureuse au sens Mathématique actuelle

Mais la solution est bien dans la propriété de l'algorithme de Goldbach d'une part
et aussi dans l'impossibilité d'utiliser l'affirmation suivante : on suppose que les événements que m et n – m soient premiers, sont statistiquement indépendants l'un de l'autre.
L'algorithme de Goldbach permet de prouver que cette supposition est fausse car si n – m est un nombre premier c'est par ce qu'il dépend de la congruence de m !
D'où si et seulement m est un nombre premier et qu'il est non congru à n modulo P, il est évident que n - m est aussi un nombre premier ! ""]

Bonne journée @Yoshi
@+

Hors ligne

#50 04-08-2021 07:01:59

RAZAFINDRAFINDRA Hercele
Invité

Re : Résolution d'un polynôme de degré n dans Q et dans Z

Bonjour!
Merci beaucoup pour vous m'aidez sur mon problème, puisque je suis très satisfait pour vous me donnez les solutions de ce problème. Mais maintenant, si c'est possible alors je vous demanderai encore d'autre chose. Merci

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
quatre-vingt cinq moins quatre
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums