Dicotomie en langage C
Fermé
zebino
Messages postés
6
Date d'inscription
dimanche 27 mars 2011
Statut
Membre
Dernière intervention
22 juillet 2015
-
27 mars 2011 à 16:56
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 27 mars 2011 à 21:31
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 27 mars 2011 à 21:31
2 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
27 mars 2011 à 17:47
27 mars 2011 à 17:47
Ce que tu veux faire et ce que tu as implémente ressemble à la méthode de Newton qui nécessite que ton x de départ soit proche de la racine cherchée. Or puisque tu pars toujours de x=0 tu auras toujours la même racine (celle la plus proche de 0).
Pour obtenir d'autres racines essaye de changer ton x de départ, il faut évidemment avoir une idée de quelle valeur pour x choisir, tu pourrais par exemple augmenter ton x dans les positifs jusqu'à changer de signe (éventuellement jamais) ou au contraire le diminuer dans les négatifs...
Pour obtenir d'autres racines essaye de changer ton x de départ, il faut évidemment avoir une idée de quelle valeur pour x choisir, tu pourrais par exemple augmenter ton x dans les positifs jusqu'à changer de signe (éventuellement jamais) ou au contraire le diminuer dans les négatifs...
zebino
Messages postés
6
Date d'inscription
dimanche 27 mars 2011
Statut
Membre
Dernière intervention
22 juillet 2015
27 mars 2011 à 20:51
27 mars 2011 à 20:51
Merci de ta réponse.
Non j'ai aussi fais newton raphson et c un autre programme ou je dois rentrer la valeur de départ donc c autre chose. La c par dichotomie et donc je prends un intervalle que je coupe en deux puis je regarde le demi intervalle ou il y a chgt de signe puis je redivise en deux etc etc... jusqu'à avoir mon pourcentage d'erreur epsilon...
Non j'ai aussi fais newton raphson et c un autre programme ou je dois rentrer la valeur de départ donc c autre chose. La c par dichotomie et donc je prends un intervalle que je coupe en deux puis je regarde le demi intervalle ou il y a chgt de signe puis je redivise en deux etc etc... jusqu'à avoir mon pourcentage d'erreur epsilon...
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
27 mars 2011 à 20:54
27 mars 2011 à 20:54
Je pense que le problème doit quand même être à peu près le même, essaye de changer ta condition initiale x=0 pour voir si ça te permet d'obtenir d'autres solutions...
zebino
Messages postés
6
Date d'inscription
dimanche 27 mars 2011
Statut
Membre
Dernière intervention
22 juillet 2015
27 mars 2011 à 21:01
27 mars 2011 à 21:01
nan en faite je veux pas qu'il me donne une seule valeur mais TOUTES. C'est vrai que je peux changé ma cond initiale pour avoir la deuxième mais je veuxqui balaye tout mon intervale en gros sur [-10;10] qu'il me donne les racine -1 et 1 pour la fonction x²-1
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
Modifié par KX le 27/03/2011 à 21:32
Modifié par KX le 27/03/2011 à 21:32
Si tu cherches des valeurs sur l'intervalle [A,B], tu pars de x=A pour trouver la valeur x1 la plus petite telle que f(x1)=0, et si tu recommence en partant de x=B tu vas trouver la valeur la plus grande x2 telle que f(x2)=0. Si x1 et x2 sont identiques tu t'arrêtes, sinon tu recommence
Si tu sais que tu as d'autres valeurs à trouver, elles seront forcément sur l'intervalle [x1,x2] mais il faudrait juste pouvoir s'assurer que tu ne reprennes pas x1 et x2 à nouveau... et tu recommences !
Dans tous les cas, il faudra que tu réitères ton algorithme avec au moins autant de x différents que de racines à trouver...
Si tu sais que tu as d'autres valeurs à trouver, elles seront forcément sur l'intervalle [x1,x2] mais il faudrait juste pouvoir s'assurer que tu ne reprennes pas x1 et x2 à nouveau... et tu recommences !
Dans tous les cas, il faudra que tu réitères ton algorithme avec au moins autant de x différents que de racines à trouver...