Bonsoir,
Merci pour les suggestions.
Je viens de mettre en oeuvre le solution de Clement.
Ca marche, je me suis arrete au premier ordre pour l'instant.
Je calcule tout numerique car ma function n'a pas de forme
analytique.
Encore merci.
===========================================================================
Patrick DUPRÉ | | email: pdupre@???
Laboratoire de Physico-Chimie de l'Atmosphère | |
Université du Littoral-Côte d'Opale | |
Tel. (33)-(0)3 28 23 76 12 | | Fax: 03 28 65 82 44
189A, avenue Maurice Schumann | | 59140 Dunkerque, France
===========================================================================
> Sent: Tuesday, March 29, 2016 at 7:35 PM
> From: "Clément Février" <clement@???>
> To: guilde@???
> Subject: Re: Question de math
>
> Bonjour la liste,
>
> Voila, c'est mon premier message sur cette liste, mais je suis
> relativement habitué à ce genre de problème, j'apporte ma contribution.
> En fait, c'est un problème de point fixe:
> g(x) = 0
> avec g(x) = f(x)−2πk.
>
> Typiquement, ce qui fonctionne bien, ce sont les méthodes Newtoniennes
> et dérivées:
> https://en.wikipedia.org/wiki/Newton's_method
> voir aussi quasi-Newton method
> J'utilise souvent Broyden (que je code en dure pour reconstruire des
> matrices) ou j'utilise BFGS depuis une librairie, par exemple dlib mais
> il y en a plein d'autre (dlib est la plus simple et plus rapide si on
> fait du c++).
>
> Le principe est très simple, c'est juste un calcul de pente.
>
> L'avantage, c'est que tu n'as pas nécessairement besoin de faire de
> supposition sur le domaine de x (mais c'est mieux), par contre, tu
> donnes un point de départ (aléatoire ou un truc pas dégeux mais évites
> les point-selles).
> Ensuite, tu le fais pour des valeurs fixes de k et tu gardes les runs
> qui convergent.
>
> Si tu peux dériver f, c'est mieux pour ces méthodes (tu peux mettre la
> dérivée en argument dans les lib bien faites), sinon, tu le fait
> numériquement (toi-même, mais les libs proposent normalement de faire le
> boulot pour toi).
>
> C'est très rapide, cependant les deux problèmes que je rencontre souvent
> sont:
> * Oscillation entre 2 valeurs (pas de convergence)
> * Je me retrouve coincer dans un minimal local.
> Ce qui peut aussi arriver:
> * Pas de solution
> * Des trucs moches sur les domaines ouverts ou si la fonction n'est pas
> continue (mais ce n'est pas trop sensible à la dérivée si faite
> numériquement).
>
> Voila pour ma petite contribution,
> Clèm
>
>
> On 29/03/2016 18:55, Patrick Dupre wrote:
> > Merci.
> >
> > Oui, je suis d'accord avec cette option qui est basique et standard.
> > Je recherchais une methode peut-etre, soit plus elaboree, soit
> > deja implementee dans un algorithme.
> >
> > Peut-etre que je me fais des illusions !
> >
> > ===========================================================================
> > Patrick DUPRÉ | | email: pdupre@???
> > Laboratoire de Physico-Chimie de l'Atmosphère | |
> > Université du Littoral-Côte d'Opale | |
> > Tel. (33)-(0)3 28 23 76 12 | | Fax: 03 28 65 82 44
> > 189A, avenue Maurice Schumann | | 59140 Dunkerque, France
> > ===========================================================================
> >
> >
> >> Sent: Tuesday, March 29, 2016 at 6:07 PM
> >> From: "Edgar Bonet" <guilde@???>
> >> To: guilde@???
> >> Subject: Re: Question de math
> >>
> >> Patrick Dupre a écrit :
> >>> Comment resoudre l'equation:
> >>> f(x) = 2 k \pi
> >>> en x et (k) ?
> >>> Numeriquement.
> >>
> >> Difficile de dire sans en savoir plus...
> >>
> >> À vue de nez :
> >>
> >> - tu balayes la plage de x pertinente avec un pas raisonnablement petit,
> >> et tu notes chaque fois que la partie entière de f(x)/(2π) change ;
> >> - pour chacun de ces changements que tu as repérés, tu as maintenant une
> >> valeur de k et un encadrement de x, il ne te reste plus qu'à résoudre
> >> (en x) f(x)−2πk = 0 par la méthode de ton choix.
> >>
> >> Edgar.
> >>
> >>
> >
>
>