Accueil > > > RECHERCHE DE ZÉRO D'UNE FONCTION PAR DICHOTOMIE
RECHERCHE DE ZÉRO D'UNE FONCTION PAR DICHOTOMIE
Information sur la source
Description
Le titre est assez explicite, c'est juste 60 petites lignes pour trouver le zéro d'une fonction par dichotomie. Il s'agit d'un processus itératif où l'intervalle de recherche du zéro est divisé par deux à chaque étape, ce qui le rend assez efficace. J'ai essayé d'expliquer le fonctionnement avec des commentaires, ça me parait assez compréhensible...
Source
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h> //pour cos, sin ou autre...
-
- int dichotomie ( double (*)(double), double, double, double*, double); //fonction
-
- int main (int argc, char *argv[])
- {
- double zero , //zero recherché
- a, b, //intervalle [a,b]
- precision ; //précision voulue
-
- printf("Exemple : \n");
-
- if ( dichotomie (sin, -1.0, 1.0, &zero, 1.0e-2) != -1 ) {// exemple avec sin dans [-1;1]
- printf("Zero de la fonction sin dans l'intervalle [-1;1] a 1e-2 pres : \n%le\n", zero);
- }
- else printf("Erreur.\n");
-
- if ( dichotomie (sin, -1.0, 2.0, &zero, 1.0e-2) != -1 ) {// exemple avec sin dans [-1;2]
- printf("Zero de la fonction sin dans l'intervalle [-1;2] a 1e-2 pres : \n%le\n", zero);
- }
- else printf("Erreur.\n");
-
- system("PAUSE");
- return 0;
- }
-
- int dichotomie ( double (*f)(double), double a, double b, double* zero, double precision)
- //f : fonction dont on veut trouver le zero
- //a et b : intervalle
- //zero : zero
- //precision : precision voulue
- {double m, //milieu de l'intervalle courant
- fm, //valeur de f(m)
- fa, fb ; //valeur de f(a) et de f(b)
-
- fa = (*f)(a);
- fb = (*f)(b);
- if (fa*fb>=0 || a>=b ) {printf("Intervalle incorrect.\n"); return -1;} //Intervalle incorrect
-
- while ( b-a > precision )
- {
- m = (b+a) / 2 ;
- fm = (*f)(m) ;
- if (fm==0) break; //zero trouvé
-
- if (fa*fm < 0) {
- b = m;
- fb = fm;
- }
- else {
- a = m;
- fa = fm;
- }
-
- }
-
- *zero = m;
- return 0;
- }
#include <stdio.h>
#include <stdlib.h>
#include <math.h> //pour cos, sin ou autre...
int dichotomie ( double (*)(double), double, double, double*, double); //fonction
int main (int argc, char *argv[])
{
double zero , //zero recherché
a, b, //intervalle [a,b]
precision ; //précision voulue
printf("Exemple : \n");
if ( dichotomie (sin, -1.0, 1.0, &zero, 1.0e-2) != -1 ) {// exemple avec sin dans [-1;1]
printf("Zero de la fonction sin dans l'intervalle [-1;1] a 1e-2 pres : \n%le\n", zero);
}
else printf("Erreur.\n");
if ( dichotomie (sin, -1.0, 2.0, &zero, 1.0e-2) != -1 ) {// exemple avec sin dans [-1;2]
printf("Zero de la fonction sin dans l'intervalle [-1;2] a 1e-2 pres : \n%le\n", zero);
}
else printf("Erreur.\n");
system("PAUSE");
return 0;
}
int dichotomie ( double (*f)(double), double a, double b, double* zero, double precision)
//f : fonction dont on veut trouver le zero
//a et b : intervalle
//zero : zero
//precision : precision voulue
{double m, //milieu de l'intervalle courant
fm, //valeur de f(m)
fa, fb ; //valeur de f(a) et de f(b)
fa = (*f)(a);
fb = (*f)(b);
if (fa*fb>=0 || a>=b ) {printf("Intervalle incorrect.\n"); return -1;} //Intervalle incorrect
while ( b-a > precision )
{
m = (b+a) / 2 ;
fm = (*f)(m) ;
if (fm==0) break; //zero trouvé
if (fa*fm < 0) {
b = m;
fb = fm;
}
else {
a = m;
fa = fm;
}
}
*zero = m;
return 0;
}
Historique
- 29 novembre 2005 18:43:10 :
- Mise à jour des mots clés pour le moteur de recherche comme proposé dans la lettre d'info...
- 09 février 2008 20:15:28 :
- /
- 20 juillet 2009 14:37:01 :
- Modification de la description
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Recherche fou de C pour réaliser une petite dll [ par loskiller62 ]
BonjourProgrammeur VB, j'ai un besoin (relativement urgent) pour une dll. Il s'agit d'une fonction réalisable qu'en Cpp mais dont j'ai besoin pour mon
Recherche algo de la fonction ulltoa() [ par akboy7015 ]
Actuellement, je développe sur VC7 et je travail beaucoup avec des __int64. Le problème est que la fonction ulltoa() n'a pas l'air d'exister.Bien ente
Aide pour une fonction recherche avec suivant [ par oeil123 ]
je n'arrive pas a trouver la fonction que microsoft utilise pour faire le dialog recherche avec le fameux bouton suivant qui m'interesse.En fait je vo
recherche de fonction [ par jeromedu94 ]
je recherche une fonction qui dirait si il y a eu un appui sur une touche ou pas
Problème Recherche + Helpppppppppppp [ par emmanuel9 ]
Bonjour, En faite j'ai une fenêtre destiné à la recherche et on peut recherche une personne sur son nom, prénom, sur la date de
Recherche méthodes pour faire pivoter le bureau de 0, 90, 180, 270 degrés [ par scrumby ]
Bonjour à tous,comme indiqué dans le sujet je cherche désespérément une fonction ou une méthode qui me permettrait de fa
retour d'une fonction [ par noulii ]
J'ai utilisé la fonction suivante, venant de "bruno" que j'ai trouvé sur ce site :HANDLE hfind;WIN32_FIND_DATA wfd;// Initialise la recherchehfind = F
recherche de l’optimum global de la fonction de Rastringin [ par angelmimitta ]
bonjour à tous, enfait j'ai un petit projet à faire et j'ai besoin d'aide, l"nnoncé est le suivant: Implémenter le recuit simulé pour la recherche de
Fonction recherche en C++ [ par Ciol ]
Salut a tous J ai bien lu les differents messages deposés par les 3 habitués du Chat et je ne souhaite donc pas trouver une solution tte faite pour m
Besoin d'aide , recherche d'une fonction [ par sivaller ]
Bonjour, Je cherche en C AINSI : à lire les données BCD de Windows Vista ou Seven X64, afin de déterminer si Windows est en mode testsigning ou pas .
|
Derniers Blogs
CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks [HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL[HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL par Pierrick CATRO-BROUILLET
Avec la sortie prochaine de la Beta Consumer Preview de Windows 8, j'avais envie de revenir sur une des fonctionnalités que j'attends le plus et que, en bon geek que je suis, j'utilise déjà : Hyper-V 3 ainsi son module PowerShell.
Il y a déjà pléthor...
Cliquez pour lire la suite de l'article par Pierrick CATRO-BROUILLET IIS7 - COMPRESSION GZIPIIS7 - COMPRESSION GZIP par cyril
La compression GZIP permet d'améliorer les performances de navigation en compressant ce qu'envoie le serveur à un client. Pour comprendre comment cela fonctionne, regardons ce qu'il se passe au niveau HTTP lorsqu'un client tente d'accéder à une ress...
Cliquez pour lire la suite de l'article par cyril
Forum
ARBRE BINAIREARBRE BINAIRE par pacotheking
Cliquez pour lire la suite par pacotheking
Logiciels
Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning Academy System (17.1.3.0)ACADEMY SYSTEM (17.1.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|