Methode de Newton - Minimisation

Signaler
Messages postés
4
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
28 mars 2005
-
SeaAngel
Messages postés
1
Date d'inscription
dimanche 13 février 2005
Statut
Membre
Dernière intervention
25 avril 2005
-
Salut, je cherche le code source de la methode de Newton pour rechercher le minimum d'une fonction. (en C)
Si quelqu'un peut m'aider ce serait cool!
Merci


Farez

8 réponses

Messages postés
273
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
31 mars 2015
1
Salut,
C'est pas plutôt les racines de ta fonction que tu recherches avec la méthode de Newton ?

Jarod_Delaware
Messages postés
4
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
28 mars 2005

C'est le minimum de la fonction que je cherche, mais trouver les
racines par la methode de Newton aussi ca m'interesse si t'as qq ch a
me proposer

Merci



Farez
Messages postés
273
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
31 mars 2015
1
Pour le minimum de la fonction je me rapelle plus comment on fait à moins que tu es l'algo. Par contre pour la recherche des zéros d'une fonction par la méthode de Newton c'est facile. Il y a aussi la recherche de zéro par la méthode de dichotomie. J'ai fais une source dessus : http://www.cppfrance.com/code.aspx?id=27919
au sinon c'est quoi ta fonction que tu veux étudier ?

Jarod_Delaware
Messages postés
706
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
27 janvier 2009
4
salut, en dimension 1 c'est tres facile, maintenant si ta fonction est a valeur dans R^n, c'est un peu plus complexe...



a la base newton trouve un 0 de ta fonction, tu appliques ca a ta dérivée pour trouver le min (ou le max).

a priori la convergence n'est garantie que quand ta fonction est convexe



ex: trouver un 0 de x²-2

#include <math.h>

#include <stdio.h>

...

// la fonction dont on cherche un zero

double f(double x)

{

return x*x - 2.0;

}



// la derivee de f

double fprime(double x)

{

return 2.0*x;

}



// x0 point initial : essayer de le prendre proche du zero supposé

double Newton(double x0, double (*fnc)(double), double (*fncprime)(double))

{

double Epsilon = 0.000001;

double xcourant = x0;

double xsuivant;

unsigned int i = 0;



for (i = 0; i < 2000; i++)

{

xsuivant = xcourant - fnc(xcourant) / fncprime(xcourant);

if (fabs(xcourant-xsuivant)<Epsilon)

break;

xcourant = xsuivant;



}

return xsuivant;

}



int main(int argc, char** argv)

{

printf("racine de 2 vaut: %f\n", Newton(5,f, fprime));

getc();

}



a++
Messages postés
4
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
28 mars 2005

Jarod si t'as le prog qui trouve les 0 d'une fonction, ca m'aiderait beaucoup.
Le projet que j'ai a faire c'est d'utiliser la methode de newton pr trouver le minimum d'une fonction quelconque.
Avec le prog qui trouve le 0 de la fonction, et le prog que Cosmobob a posté, je pense que ca devrait etre bon.
Merci pour votre c cool


Farez
Messages postés
273
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
31 mars 2015
1
Salut,
Pour trouver les zéros d'une fonction tu peux déjà allé voir mon prog dicotomie. J'ai mis l'adresse dans un de mes messages un peu plus haut. Au sinon il y a la méthode de Newton-Raphson, au choix.

Jarod_Delaware
Messages postés
706
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
27 janvier 2009
4
salut, la methode de dichotomie est a eviter qd meme, ca marche
que si ta fonction est croissante ou decroissante (condition plutot
forte)



a+
Messages postés
1
Date d'inscription
dimanche 13 février 2005
Statut
Membre
Dernière intervention
25 avril 2005

Salut !
Je voulais te remercier cosmobob pcq j étudie ces façons de trouver les 0 de fonctions avec C++ et j ai tout ce k il me faut avec la méthode de newoton Raphson ! Merci bcp
Je voulais savoir si tu connaissais la méthode du point fixe par hasard ??