Re: Question de math

トップ ページ

このメッセージに返信
著者: Clément Février
日付:  
To: guilde
題目: 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.
>>
>>
>