Polynome

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
pluie2
Membre Rationnel
Messages: 521
Enregistré le: 08 Sep 2013, 13:20

Polynome

par pluie2 » 18 Mai 2016, 08:43

Bonjour à tous, j'aimerais pouvoir écrire un programme en python me permettant de renvoyer une valeur approchée de l'unique racine réelle de ce polynome (notée v(t)) à 10^(-n) près.

Mais je n'y arrive pas.

Voici mon polynome: P_t(x)=x^3+tx²+1 avec t un réel positif non nul.

On me demand ede prendre en argument t et un entier n pour l'écriture de la fonction.
def polynome(t,x):
return(x**3+t*x**2+1)
def approchee(t,n):
k=0
solution=x
while polynome(t,x)==0 and solution>10**(-n):
solution=solution+polynome(t,x)
k=k+1
solution=solution+polynome(t,x)
return(solution)

plusieurs problème ici: d'abord je note x dans la deuxième fonction alors qu'il n'est pas défini je ne vois vraiment pas comment faire merci de votre aide :)



Robot

Re: Polynome

par Robot » 18 Mai 2016, 15:09

Peux-tu expliquer, en mots, quel est l'algorithme d'approximation de racine que tu utilises ?

pluie2
Membre Rationnel
Messages: 521
Enregistré le: 08 Sep 2013, 13:20

Re: Polynome

par pluie2 » 18 Mai 2016, 15:56

tout d'abord, je crée une fonction qui me permet de définir mon polynome.
Ensuite, dans le deuxième algorithme, je veux essayer d'approcher la racine de cette fonction mais je sais qu'il n'a pas de sens car je ne vois pas comment définir v(t)...faut il d'abord définir le polynome?

Robot

Re: Polynome

par Robot » 18 Mai 2016, 16:12

Tu ne réponds pas à la question : quel algorithme d'approximation de racine utilises-tu ? Est-ce une méthode de Newton ? Est-ce une dichotomie à partir d'un encadrement ?
A lire ton programme, j'ai l'impression que c'est n'importe quoi, excuse-moi de te le dire.

pluie2
Membre Rationnel
Messages: 521
Enregistré le: 08 Sep 2013, 13:20

Re: Polynome

par pluie2 » 18 Mai 2016, 16:26

justement je n'utilise aucune des méthodes citées...je ne comprends pas pourquoi il faudrait les utiliser ?
mais oui j'ai conscience qu'il n'a pas de sens...

Robot

Re: Polynome

par Robot » 18 Mai 2016, 17:00

M'enfin, tu fais des mathématiques ou de la magie ? Si tu veux trouver numériquement une racine d'un polynôme, il te faut bien utiliser un algorithme d'approximation de racine ! Tu n'en as jamais vu ?

pluie2
Membre Rationnel
Messages: 521
Enregistré le: 08 Sep 2013, 13:20

Re: Polynome

par pluie2 » 18 Mai 2016, 17:06

je connais les algos de newton et de dichotomie mais je ne les ai jamais (je suis débutant) utilisé en dehors de leur "écriture propre". Donc ça veut dire qu'ici je peux utiliser newton ? ça me ferait quelque chose du genre:

def newton(t,n):
x=[t]
for i in range(n):
x=x+[x[i]-f(x[i])/fprime(x[i])]
return x

mais en quoi cet algo me donne une valeur approchée de la racine de mon polynome à 10^- près (je ne vois pas où écrire cette info) et de plus, ici j'ai écrit une fonction f au hasard, comment écrire mon pôlynome qui prend 2 arguments (t,x) ?

Robot

Re: Polynome

par Robot » 18 Mai 2016, 17:10

Tu peux utiliser la méthode de Newton. Sauf que je ne comprends pas ce que tu écris comme esquisse de programme. Et il faut bien sûr réfléchir à la condition d'arrêt qui garantit une solution à près.

pluie2
Membre Rationnel
Messages: 521
Enregistré le: 08 Sep 2013, 13:20

Re: Polynome

par pluie2 » 18 Mai 2016, 17:19

pour avoir une solution à 10^-n près, j'opterais pour une boucle while , après je ne vois pas sur quoi va porter while ?? >10^-n est ce que ?? est v(t) ?
en gros dans le programme écrit, j'ai voulu calculer : g(x)=x-P(x)/P'(x) avec ici P qui a été écrit avec la notation f et g représenterait v(t) si je comprends bien...Sauf que mon pôlynome définit dans la première fonction prend 2 arguments et je ne vois pas comment les faire apparaitre dans l'écriture de g(x)...

def newton(t,n):
x=[t]
for i in range(n):
x=x+[x[i]-f(x[i])/fprime(x[i])]
while x>10^(-n):
x=x+[x[i]-f(x[i])/fprime(x[i])]
return x

Robot

Re: Polynome

par Robot » 18 Mai 2016, 17:27

Tu as écrit une procédure qui prend en entrée et et retourne .
Il te serait difficile d'écrire une procédure qui prend en entrée et et retourne ?

Pour le critère d'arrêt, tu as écrit n'importe quoi.
Je te conseille de commencer par réfléchir mathématiquement au problème. Ce n'est qu'une fois que tu auras fait une analyse mathématique correcte que tu pourras espérer l'implémenter en un programme raisonnable

Doraki
Habitué(e)
Messages: 5021
Enregistré le: 20 Aoû 2008, 11:07

Re: Polynome

par Doraki » 18 Mai 2016, 17:30

Comment tu fais, à la main, pour trouver une valeur approchée de la racine réelle de x^3+2x²+1 à 0.1 près ?

pluie2
Membre Rationnel
Messages: 521
Enregistré le: 08 Sep 2013, 13:20

Re: Polynome

par pluie2 » 18 Mai 2016, 17:45

Doraki : à la main, j'essaie plusieurs valeurs parmi les plus classiques ou bien je dérive P jusqu'à ce que P^(n)(x) différent de 0 avec x la racine de P. Ensuite je factorise P

Robot:

def polynome(t,x):
return(x**3+t*x**2+1)
def polynome_derivee(t,x):
return(3*x**2+2*t*x)
def approchee(t,n):
v=[t]
for i in range(n):
v=v+[v[i]-polynome(t,v[i])/polynome_derivee(t,v[i])]
déjà ici je pense que mon programme est faux car x n'intervient pas dans le troisième programme

Robot

Re: Polynome

par Robot » 18 Mai 2016, 19:10

Je vois que tu t'obstines à ne pas réfléchir mathématiquement avant de te lancer dans l'écriture d'un programme.

Au fait, pourrais-tu expliquer, en français, clairement, ce que fait ce programme ? Si tu n'as pas les idées claires, ton programme sera forcément du n'importe quoi.

pluie2
Membre Rationnel
Messages: 521
Enregistré le: 08 Sep 2013, 13:20

Re: Polynome

par pluie2 » 18 Mai 2016, 20:02

La fonction approchee prend en argument 2 variables t et n.
v, qui représente la racine de la fonction polynome, est une liste valant t. Ensuite, j'applique la méthode de newton qui permet d'approcher v à l'aide de la fonction polynome et de sa dérivée (ça je ne l'invente pas, c'est dans le cours...). J'avoue ne pas savoir quoi dire de plus mis à part le fait que j'obtiens juste la valeur de la racine et non son approximation à 10^-n...

Robot

Re: Polynome

par Robot » 18 Mai 2016, 21:50

Une racine (même approchée) est un nombre réel, pas une liste ! Dans l'algorithme que tu as recopié, la liste est celle des approximations successives. On n'a pas besoin de stocker cette liste si on veut juste rendre une valeur approchée de la racine.
L'algorithme de Newton est une méthode itérative. On part d'un réel, normalement pas trop loin de la racine cherchée, puis on applique itérativement la formule que tu as recopié de ton cours.
Il faut que tu choisisse le point de départ de l'algorithme de Newton. Pour ça, il serait bon que tu commences par étudier le tableau de variation du polynôme dont tu cherches une racine, pour avoir une idée d'un choix raisonnable de point de départ (qui peut dépendre du paramètre de ).
Ensuite, il faut savoir quand t'arrêter. Le de l'algorithme que tu as emprunté est le nombre d'itérations. Or ce qu'on veut, c'est une précision garantie (à près, où est donné). Allez, je te donne un tuyau : si change de signe entre et , on est sûr que la racine de est à une distance de de moins de .

A part ça, Newton a droit à une majuscule à son patronyme.

pluie2
Membre Rationnel
Messages: 521
Enregistré le: 08 Sep 2013, 13:20

Re: Polynome

par pluie2 » 18 Mai 2016, 22:28

Ok merci pour votre explication...Voici les variations de P (sauf erreur):

P est croissante de moins l'infini à une valeur z que je ne pense pas pouvoir déterminer. P est ensuite décroissante sur z à -1/3t puis croissante de -1/3t à plus l'infini.
v(t) est localisé dans le premier intervalle puisque c'est sur ce dernier que P change de signe; elle est d'abord négative puis positive. Pour écrire votre condition (si P change de signe entre...) comment je peux déterminer a ? Dois je le calculer ?

Robot

Re: Polynome

par Robot » 19 Mai 2016, 06:41

Pour écrire votre condition (si P change de signe entre...) comment je peux déterminer a ? Dois je le calculer ?

Je t'ai donné un tuyau pour le test d'arrêt de la boucle de l'algorithme de Newton. Ne comprends-tu pas ?

Quant à ton étude de la variation de , tu ferais bien de la reprendre. Ce n'est tout de même pas difficile de trouver explicitement les racines de la dérivée !

pluie2
Membre Rationnel
Messages: 521
Enregistré le: 08 Sep 2013, 13:20

Re: Polynome

par pluie2 » 19 Mai 2016, 11:45

0 est une racine évidente de P'. Pour faire mon tableau de variations, je suis allé jusqu'à P". Sur moins l'infini à -1/3t, P est croissante et négative puis positive (donc la racine de P appartient à cet intervalle). Sur -1/3t à plus l'infini, P est décroissante puis croissante mais toujours positive.

Si ce n'est pas correct je ne comprends vraiment pas d'où vient le problème...Si j'ai compris ce que vous m'avez dit pour Newton sauf que je ne comprends pas comment déterminer votre a...(et du coup comment modifier le programme en conséquence)

Robot

Re: Polynome

par Robot » 19 Mai 2016, 13:34

P est croissante de moins l'infini à une valeur z que je ne pense pas pouvoir déterminer. P est ensuite décroissante sur z à -1/3t puis croissante de -1/3t à plus l'infini.

Sur moins l'infini à -1/3t, P est croissante et négative puis positive (donc la racine de P appartient à cet intervalle). Sur -1/3t à plus l'infini, P est décroissante puis croissante mais toujours positive.

Deux versions contradictoires. Et la deuxième n'est pas entièrement correcte (erreur de calcul d'une racine de la dérivée).

Si j'ai compris ce que vous m'avez dit pour Newton sauf que je ne comprends pas comment déterminer votre a...(et du coup comment modifier le programme en conséquence)

:(
Tu as besoin d'un test d'arrêt pour savoir si l'approximation obtenue à l'issue d'une boucle de l'algorithme de Newton est proche de la racine de à moins de . Je te donne une condition suffisante pour qu'un réel soit proche de la racine de à moins de : que change de signe entre et . (C'est aussi une condition nécessaire, d'ailleurs).

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 33 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite