Bonjour
j'ai écrit un code pour approcher la/les solution(s) réelle(s) d'une équation du troisième degré par la méthode de la dichotomie.
Le programme fonctionne formellement :
V A R I A B L E S
a E S T _ D U _ T Y P E N O M B R E
b E S T _ D U _ T Y P E N O M B R E
S e u i l E S T _ D U _ T Y P E N O M B R E
M e s s E S T _ D U _ T Y P E C H A I N E
M i l i e u E S T _ D U _ T Y P E N O M B R E
D E B U T _ A L G O R I T H M E
a P R E N D _ L A _ V A L E U R - 2
b P R E N D _ L A _ V A L E U R 3
S e u i l P R E N D _ L A _ V A L E U R 0 . 0 0 0 0 0 1
M i l i e u P R E N D _ L A _ V A L E U R ( a + b ) / 2
T A N T _ Q U E ( a b s ( b - a ) > S e u i l ) F A I R E
D E B U T _ T A N T _ Q U E
S I ( F 1 ( a ) * F 1 ( ( a + b ) / 2 ) < 0 ) A L O R S
D E B U T _ S I
a P R E N D _ L A _ V A L E U R a
b P R E N D _ L A _ V A L E U R ( a + b ) / 2
F I N _ S I
S I N O N
D E B U T _ S I N O N
a P R E N D _ L A _ V A L E U R ( a + b ) / 2
b P R E N D _ L A _ V A L E U R b
F I N _ S I N O N
A F F I C H E R a
A F F I C H E R b
F I N _ T A N T _ Q U E
F I N _ A L G O R I T H M E
F o n c t i o n n u m é r i q u e u t i l i s é e :
F 1 ( x ) = p o w ( x , 3 ) + 2 * p o w ( x , 2 ) - 1
J'ai 3 questions.
1/ Algbx m'affiche le résultat de tous les tests successifs jusqu'au résultat avec la précision que j'ai fixée. Est-il possible de limiter l'affichage au seul dernier résultat le plus fin ?
2/ Dans le cas de trois solutions réelles (cas avec cette fonction F1), seule la solution la plus grande est testée et affichée. Est-il possible d'avoir l'affichage des 3 solutions ?
3/ Que se passerait-il si l'équation n'admettait pas de solution réelle ? (Si vous avez un exemple de fonction degré 3 qui ne s'annule que pour des valeurs complexes, je la testerai).
Merci pour votre aide et vos conseils.
salut
1/
il suffit de sortir "afficher a" et "afficher b" de la boucle "tant que"
2/
il suffit d'initialiser avec les bonnes valeurs (un bon encadrement)
de plus le traitement dépend des variations de f entre ces deux valeurs
il est toujours préférable de choisir un encadrement sur lequel la fonction est monotone
dans tous les autres cas il peut tomber sur n'importe laquelle des racines
j'écrirais plutôt
Bonsoir carpediem
merci pour tes conseils
Pour le 1, j'aurais dû y penser ; merci
pour le 2, bien sûr avec F1', on sait comment varie F1, ce qui permet de fixer des intervalles de monotonie à la demande comme tu l'as pertinemment suggéré.
Reste un pb que je ne parviens pas à résoudre :
sur 2 intervalles où F1 est croissante, j'obtiens un encadrement précis des solutions (que je connais par ailleurs par un logiciel graphique)
Sur l'intervalle de décroissance ( [-4/3 ; 0] ), par contre, il m'approche à la solution -2/3 au lieu de -1 (solution "évidente" de surcroît) , et je ne comprends pas pourquoi, (ça fait 1/2 heure que je cherche) ; je suppose que c'est dans l'instruction avec les a et les b, j'ai fait plusieurs essais mais ça n'aboutit pas !
Peux-tu (toi ou d'autres personnes) m'aider stp.
Merci par avance
c'est ici ::
fais deux schéma :
f est croissante sur [a, b]
f est décroissante sur [a, b]
(et bien entendu f(x) = 0 a une racine)
et regarde ce que tu mets dans les variables a et b suivant les résultats de ton test
tu verras qu'il faut distinguer deux cas
Hello
j'ai simulé sur excel ce que l'algorithme est censé faire (sauf que moi je ne le fais pas à vitesse grand V) et le problème semble venir du choix des bornes des intervalles de monotonie.
f est décroissante sur [-4/3;0]
Si je commence en attribuant -4/3 à a et 0 à b, on a f(a)*f((a+b)/2)< 0
et le deuxième test se fait sur f(-4/3)*f(-1) qui vaut 0, et c'est là que les perturbations commencent.
mais si dès le départ je pose b = -1/2 (f décroissante sur [-4/3 ; -1/2]
alors sans rien changer au code, algobox m'approche la bonne solution (-1) avec la précision souhaitée.
Donc, à défaut de conclure définitivement avant d'avoir reçu un ou des avis plus éclairés, je constate "empiriquement" que c'est le choix d'une valeur de b qui a d'emblée une image qui est un des zéros de f qui fait que algobox affiche un résultat aberrant.
Mais plus que constater, j'aimerais pouvoir l'expliquer clairement ; peux-tu (toi ou d'autres personnes qui maîtrisent l'informatique appliquée aux mathématiques) m'éclairer à ce sujet.
Merci par avance
quelle est la fonction f ?
J'ai écrit f pour F1, pr simplifier ; c'est tjs la même qu'au début : f(x) = x3+2x²-1
en fait réessaie en remplaçant < par ... ça devrait marcher et éviter le pb quand on tombe sur une racine ... (tiens moi au courant)
quant à ses forces et ses faiblesses .... bof j'sais pas quoi dire .... il permet de donner une réponse ... si on lui donne les bonnes bornes au départ ...
il faut donc tout de même faire une étude (partielle) de f .... (encadrer les racines) ....
en particulier il risque de bugger dans le cas où f n'est pas monotone sur l'intervalle initial ...
enfin à tester .....
Hello
le contraire de quoi ?
en fait ce qui importe (il me semble) ce n'est pas la croissance ou la décroissance mais la monotonie ...
il me semble que le test est bon et c'est sur qu'avec des valeurs "approchées" plutôt qu'"exactes" ça doit aller mais je pense que même avec des valeur exactes des inégalités larges devrait convenir
enfin à tester à la main sur deux tours permet de conclure exactement ....
se donne a < c < b (c racine) et on place m entre a et c ou entre c et b et on regarde ce qu'on doit conclure ....
puis on essaie aussi m = c et on regarde ce qui se passe ...
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :