Inscription / Connexion Nouveau Sujet
Niveau école ingénieur
Partager :

Méthode Moindres Carrés pour une somme d'exponentielle

Posté par
ThonySp
01-07-10 à 11:00

Bonjour,
Je suis en train d'établir un modèle pour une courbe expérimentale. Ce modèle a pour équation :

f(x)modèle= A.e-B.x+ C.e-D.x

J'ai suivi la méthode des moindres carrés pour avoir les calculs pour les valeurs de A, B, C et D.
Démonstration :

Somme des résidus entre le modèle et la courbe expérimentale :

J=(f(xi)modèle-Yi

Comme nous souhaitons avoir un résidu très faible voire nul, il faut dériver J par rapport à tous les variables de f (ici A, B, C et D). Nous aurons donc un système à 4 équations à 4 inconnus.

(J/A)=0
(J/B)=0
(J/C)=0
(J/D)=0

Par développpement, j'ai obtenu les quatre équations :

(J/A)=(A.e-B.xi+ C.e-D.xi-Yi)=0
(J/B)=(A.e-B.xi+ C.e-D.xi-Yi)=0
(J/C)=(A.e-B.xi+ C.e-D.xi-Yi)=0
(J/D)=(A.e-B.xi+ C.e-D.xi-Yi)=0

Cela ne m'arrange pas pour résoudre le système à 4 inconnus puisque c'est la même équation.
Donc je me sens un peu perdu. Est ce que je me suis trompé de méthode de résolution ? ou je me suis complètement égaré en chemin et existe-il une méthode pour obtenir un modèle d'exponentielle de second ordre sans recourir à la méthode des moindres carrés ?

Je vous remercie de votre aide.

Posté par
A320
re : Méthode Moindres Carrés pour une somme d'exponentielle 01-07-10 à 11:05

bonjour,

sauf erreur de ma part A,B,C,D sont des constantes et non des variables. N'y a-t'il moyen de revenir à une forme linéaire?

Posté par
ThonySp
re : Méthode Moindres Carrés pour une somme d'exponentielle 01-07-10 à 11:19

A, B, C et D dont des constantes. Je ne vois pas comment faire revenir à une forme linéaire ... ?

Posté par
A320
re : Méthode Moindres Carrés pour une somme d'exponentielle 01-07-10 à 11:26

Ton énoncé est-il complet, c'est à dire y avait-il des questions avant.

si par exemple f(x)=a(e^x)+b, en posant X=ln x alors g(X)=aX+b, tu trouves a et b avec la méthode des moindres carrés par ajustement affine.

Ce que je dis est une piste...est-ce que dans ton cas on peut obtenir cette équation de droite?

Posté par
A320
re : Méthode Moindres Carrés pour une somme d'exponentielle 01-07-10 à 11:31

je voulais dire y=(e^ax).b en posant z=ln y alors z=ax+ln(b)=ax+B après on décompile pour avoir B..

Posté par
ThonySp
re : Méthode Moindres Carrés pour une somme d'exponentielle 01-07-10 à 11:32

Ta piste, je l'ai déjà exploité pour l'exponentielle de premier ordre, ca m'a donné de bons résultats satisfaisants. Mais là c'est du second ordre ... si j'applique le ln, je ne peux pas récupérer le B et D vu que c'est une somme d'exponentielle.

Posté par
A320
re : Méthode Moindres Carrés pour une somme d'exponentielle 01-07-10 à 11:38

une question que je me posais, si tu fais l'ajsutement par h(x)=Ae(-Bx) via de l'affine, donc tu trouves A et B et ensuite que tu fasse l'ajustement par g(x)=Ce(-Dx), et que tu trouves C,D via de l'affine est-ce que l'ajustement de f est celui de h+g?

J'ai peut être tout faux....reste à le prouvez!

Posté par
A320
re : Méthode Moindres Carrés pour une somme d'exponentielle 01-07-10 à 11:39

je dis une bêtise tu va avoir A=C et B=D, je vais me coucher...

Posté par
A320
re : Méthode Moindres Carrés pour une somme d'exponentielle 01-07-10 à 11:48

je dirais comme ça à vue d'oeil, de développer ton résidu, de supposer C,D,B et x fixé et ainsi tu obtiens un trinôme du second degré en A: aA^2+bA+c. Le minimum étant obtenu en A=-b/2a etc...

Posté par
ThonySp
re : Méthode Moindres Carrés pour une somme d'exponentielle 01-07-10 à 11:49

Non, tu peux avoir raison, c'est ma première méthode que j'ai employé avant d'utiliser le moindre carré sur l'équation de second ordre. En fait j'ai fait d'abord ln(y) qui m'a donnée une courbe avec deux "pentes". J'ai sélectionné tout bêtement la zone de la première "pente" pour avoir une droite (h(x)=A.e(-xb)) et ensuite j'ai sélectionné la zone de l'autre "pente" qui m'a donné une droite (g(x)=B.e(-xd)).

J'ai donc les valeurs de A, B, C et D. Mais le souci c'est que quand je fais : f(x)=g(x)+h(x) ca s'éloigne de la courbe expérimentale vu qu'on additionne les amplitudes (A et C).

C'est vrai que ca creuse, mais on va y arriver !!

Posté par
ThonySp
re : Méthode Moindres Carrés pour une somme d'exponentielle 01-07-10 à 11:58

Tu peux développer ton explication de résidu ? en supposant que B, C, D et x sont fixes ?

Posté par
jamo Moderateur
re : Méthode Moindres Carrés pour une somme d'exponentielle 01-07-10 à 12:14

Bonjour,

le modèle que tu as choisi tout au début n'est pas linéaire selon les paramètres A, B, C et D.

Donc je doute fort que tu puisses trouver de belles formules qui te donneront leurs valeurs en fonction des coordonnées des points de mesure.

Il existe toujours des méthodes d'optimisation pour retrouver des valeurs, c'est en général assez lourd à programmer.

Posté par
ThonySp
re : Méthode Moindres Carrés pour une somme d'exponentielle 01-07-10 à 12:32

Merci jamo de me donner la réponse !

C'est que je doutais, c'est difficile (voire impossible, mais n'est pas français ce mot) de trouver des équations pour A, B, C, D en fonction des coordonnées des points de mesure.

Quelle méthode d'optimisation tu me propose pour ma courbe ? Car je ne connais pas du tout les modèles. Merci d'avance !!

Posté par
jamo Moderateur
re : Méthode Moindres Carrés pour une somme d'exponentielle 01-07-10 à 12:53

Alors en ce qui concerne la méthode d'optimisation à choisir ... Bonne question !

Il en existe tellement, elles ont toutes leurs avantages et leurs inconvénients, sont plus ou moins rapides, plus ou moins efficaces selon la tête de le fonction ou le nombre de variables, nécessitent ou non l'utilisation de la dérivée, etc ...

Ici, tu as un modèle avec 4 paramètres.
Il est possible de dériver la fonction par rapport à chacun des 4 paramètres, et les dérivées restent des fonctions assez simples (facilement et rapidement évaluables).
Donc on pourrait envisager une méthode qui utilise les dérivées, du genre Newton-Raphson.

Je te conseille de faire une recherche Google, du genre "Newton Raphson multidimension", tu devrais trouver des choses.

De plus, ça dépend aussi en quoi tu souhaites programmer.

Posté par
A320
re : Méthode Moindres Carrés pour une somme d'exponentielle 01-07-10 à 13:48

Il est vrai que la stat c'est des fois u peu olé olé.

Exscusez de ne peut utiliser le Tex, mais je vais gagner du temps

moi je partirais comme suit:somme (yi-(Ae(-Bx)+Ce(-Cx))^2=somme(yi2-2yi((Ae(-Bx)+Ce(-Cx))+A2e(-2Bx)+2ABe((-B-C)x)+c2e(-2Cx))

on suppose B,C,D et x fixé donc on ne trail que sur A, que l'on cherche

donc somme A2.e(-2Bx)+A(...)+(...) je n'écrit pas tu vas y arriver

on a donc une forme aA^2+bA+C. comme a=e(-2Bx)>0 le minimum de la parabole est atteint en A=-b/2a soit A=-(...)/2e(-2Bx)

tu fais pareil pour C...

Posté par
A320
re : Méthode Moindres Carrés pour une somme d'exponentielle 01-07-10 à 14:09

je dois partir, mais c'est un peu comme la méthode des moindres carrés, tu vas trouver genre (j'invente) A=somme (x-xi)/ecarttypex

problème il me semble que B est pris dans le calcul de A!

bon courage

Posté par
Pierre_D
re : Méthode Moindres Carrés pour une somme d'exponentielle 01-07-10 à 15:07

Bonjour Thony,

D'après ce que tu dis à 11H49, le nuage de points (x;lny) te montre clairement que la "réponse" linéaire (et continue ?) de lny à x est différente selon que x est dans la partie inférieure ou supérieure de son domaine ; dans ce cas, tu peux penser faire comme tu as dit, c'est-à-dire ajuster deux modèles, chacun à une partie des données xa ou x>a.
Mais le problème vient alors de la fixation de a lui-même :

1) Si tu penses pouvoir fixer autoritairement, "de l'extérieur", en t'appuyant par exemple sur des raisons inhérentes à la nature même des données, la valeur de a, tu le fais ; le seul problème vient alors de l'éventuelle contrainte de continuité en x=a, qui t'imposerait la relation ln(C/A)=(D-B)a ...
Pour l'expression et l'utilisation d'un tel modèle, le procédé classique consiste à utiliser une variable muette en plus de x : i qui vaut 1 si xa et 0 sinon, le modèle s'écrivant alors :  lny = i(lnA-Bx)+(1-i)(lnC-Dx)  ou  y = iAe-Bx + (1-i)Ce-Dx (sous la réserve, au risque de sembler en rajouter une louche, que si à x donné l'espérance de f(x) est bien égale à celle de lny, celle de ef(x) n'est pas égale à celle de y ...).

2) Si tu ne penses pas pouvoir fixer autoritairement la valeur de a, et s'il paraît sain de laisser le procédé d'ajustement déterminer cette valeur, on sort clairement du modèle linéaire (en les paramètres) ; c'est même plutôt plus simple quand on dispose d'un logiciel statistique avec un module d'ajustement non linéaire. En effet, en gardant à A, B, C, D leur signification initiale, en éliminant C au moyen de la condition de continuité, et en ajoutant astucieusement le paramètre a, le modèle initial peut se réécrire avec quatre paramètres A, B, D, a :

         3$y\ =\ Ae^{-Ba}\big[e^{-\frac B2(x-a-\sqrt{(x-a)^2})}+e^{-\frac D2(x-a-\sqrt{(x-a)^2})}-1\big]

qui est bien équivalent au modèle composite :
\{\array{3$y_1\ =\ Ae^{-Bx} & {\rm si } x\leq a \\y_2\ =\ Ce^{-Dx} & {\rm si } x\geq a }
avec la condition de continuité : 3$y_1(a)=Ae^{-Ba}=y_2(a)=Ce^{-Da}

Avec les précautions habituelles, le procédé d'ajustement devrait fournir des valeurs pertinentes de a, A, B, D (et donc de C=Ae(D-B)a) .

Posté par
Pierre_D
re : Méthode Moindres Carrés pour une somme d'exponentielle 01-07-10 à 15:28

Attention à la faute de frappe inexcusable sur l'écriture du modèle ci-dessus :

          3$y\ =\ Ae^{-Ba}\big[e^{-\frac B2(x-a-\sqrt{(x-a)^2})}+e^{-\frac D2(x-a+\sqrt{(x-a)^2})}-1\big]

Merci de l'excuser quand même ...

Posté par
ThonySp
re : Méthode Moindres Carrés pour une somme d'exponentielle 02-07-10 à 14:31

Bonjour Pierre_D (j'espère que tu es toujours là).

J'ai bien lu tes posts (même relu certains) pour mieux comprendre. Je te remercie pour tes réponses qui me guident dans mon problème.

Je vais développer un peu le contexte du problème :

J'ai une courbe qui monte brutalement à un maximum (ici Imax) puis il décroit exponentiellement. Alors je sélectionne les données qui sont compris entre Imax et la fin de la décroissance. Je passe des coordonnées (xi,yi) à (xi,ln(yi)).

Ensuite je développe une méthode (qui est un peu basique pour mon chef) qui consiste à tracer deux droites comme si tu traçais les droites sur la courbe directement à la main. Là on retrouve ta première solution de modèle composite. Donc on oublie ça. Mon chef veut une courbe qui suit les données expérimentales de Imax jusqu'à la fin de la décroissance sans être coupée. Donc je suppose que c'est ta deuxième solution.

Tu me dis si j'ai tort :
Dans ta deuxième solution, B est le coefficient de la première droite, D est le coefficient de la deuxième droite et a est "l'intervalle" qui sépare les deux droites ?

Sinon autre chose, j'ai cherché un peu ailleurs à propos de modèle d'optimisation et j'ai trouvé le modèle de Levenberg-Marquardt.

Si quelqu'un connait ce modèle, merci de me faire signe.

Merci encore à Pierre_D et aux autres pour leurs réponses

Posté par
Pierre_D
re : Méthode Moindres Carrés pour une somme d'exponentielle 02-07-10 à 15:51

Bonjour Thony,

Je réponds d'abord à : "Dans ta deuxième solution, B est le coefficient de la première droite, D est le coefficient de la deuxième droite et a est "l'intervalle" qui sépare les deux droites ?" ; en fait : "-B est le coefficient de la première droite, -D est le coefficient de la deuxième droite", selon le modèle que tu as toi-même donné dans ton premier message et à condition de se rappeler qu'il s'agit de droites pour l' ajustement de lny (et non de y) ; et  "a est la valeur de x (et non l'intervalle) qui sépare les deux parties du modèle" .
Au fait, pourquoi écrire Ae-Bx pour la première partie du modèle si elle doit rendre compte d'une courbe croissante ? Tu touveras alors une valeur positive pour -B, c'est-à-dire négative pour B .

Enfin ma proposition de modèle composite en une seule expression n'a d'intérêt que s'il s'agit vraiment, d'après les données, d'un modèle en deux morceaux qui se rejoignent en un point franchement anguleux ; elle suppose enfin que tu disposes d'un programme d'ajustement non linéaire : l'algorithme Levenberg-Marquardt doit très bien faire l'affaire, mais c'est impossible de s'en sortir à la main. A utiliser avec les précautions habituelles, notamment en ce qui concerne la question des valeurs initiales des paramètres que l'on propose au programme.

Posté par
ThonySp
re : Méthode Moindres Carrés pour une somme d'exponentielle 02-07-10 à 16:41

Pendant ton absence, j'ai essayé de modéliser l'expression du modèle composite en une seule expression que tu m'as donnée me va assez bien.
Mais comme ma courbe finit en des valeurs nulles à la fin, alors que mon modèle continue à descendre quand x augmente. Donc pour remédier à cela, il faut que je rajoute un 3eme ordre ? quelle est son équation ?

Sinon peux-tu m'expliquer comment fonctionne le programme Levenberg-Marquardt car j'aimerai insérer ce programme dans mon programme d'analyse.

Merci

Posté par
JJa
re : Méthode Moindres Carrés pour une somme d'exponentielle 02-07-10 à 17:43

Bonjour,

ainsi que cela a été déjà dit, la fonction à optimiser :
f(x) = A exp(-B x)+C exp(-D x)
dépend de 4 paramètres A, B , C et D et n'est linéaire que relativement à A et C. Elle est non linéaire relativement à B et D.
Il ne s'agit donc pas d'une régression linéaire et le problème doit être traité par une méthode de régression non linéaire. Une recherche dans la littérature donnera des informations pour les applications de diverses méthodes de régressions non linéaires, qui sont d'emploi courant.
Ces méthodes sont de principe récursif et l'optimisation est réalisée par des calculs d'approximations successives : Ne pas espérer de calcul donnant directement le résultat, c'est à dire ne mettant pas en oeuvre un quelconque processus ittératif.
Pour répondre à la question posée : " N'y a-t'il pas moyen de revenir à une forme linéaire? " la réponse est NON si on se limite à des méthodes élémentaires. Toutefois, la réponse serait OUI si on se permettait une linéarisation par équation différentielle ou intégrale convenable et compatible avec les fonctions figurant dans l'expression à optimiser (des exponentielles dans le cas présent, ce qui est favorable).
Le principe général de linéarisation, par équation différentielle ou intégrale, est expliqué dans l'article accessible par le lien suivant :
http://www.scribd.com/people/documents/10794575-jjacquelin
puis sélectionner l'article : "Régressions et équations intégrales"
Un cas correspondant presque à celui souhaité y est traité. Il s'agit de f(x)=A+B.exp(C.x) La méthode de calcul direct (sans itération) est donnée dans l'encadré en bas de page 17.
Le cas avec deux exponentielles ne serait guère plus compliqué, mais il n'est pas explicitement traité dans ce papier.
Bien sûr, il serait possible de le faire. Mais cela demande quand même une certaine connaissance de la théorie, et un peu de pratique préalable.
Je pense que, pour un problème ponctuel comme cela semble être le cas présent, il sera plus rapide se tourner vers les méthodes "classiques" et disponibles de régressions non linéaires.
Devant un tel problème, certains péfèreront même abandonner purement et simplement la fonction f(x) = A exp(-B x)+C exp(-D x) et chercher une somme (linéaire cette fois) de plusieurs fonctions différentes et chacune ne comportant qu'un simple coefficient à optimiser (et pas de paramètre interne). La littérature est abondante sur le sujet. Le cas général est rappelé au §.4 (pages 8 et 9) d'un autre article, accessible par le même lien :
http://www.scribd.com/people/documents/10794575-jjacquelin
puis sélectionner l'article : "Régressions coniques, quadriques,..."

Posté par
ThonySp
re : Méthode Moindres Carrés pour une somme d'exponentielle 02-07-10 à 18:01

Merci JJa pour ton post et les liens intéressants.

Malheureusement je dois rester sur l'équation y=A.e-B.x + C.e-D.x, car mon chef me l'a demandé (et on ne contredit pas ce que nos chefs disent ).
Je sais qu'il n'est pas possible de linéariser cela, donc je vais employer une méthode itératif (donc un programme informatique).

J'ai su qu'un programme modélise exactement ma courbe (mais hélas est payant comme d'habitude), mais j'ai lu son mode d'emploi (avec une faible épaisseur) et il dit qu'il emploie l'algorithme de Levenberg-Marquardt. Donc je dois imiter ce programme en basant sur ca.

J'aimerai que quelqu'un m'explique comment marche cet algorithme. Merci  !!!

Posté par
jamo Moderateur
re : Méthode Moindres Carrés pour une somme d'exponentielle 02-07-10 à 18:11

On trouve l'explication de cette méthode avec le programme en C dans le "Numerical Recipes" :

Posté par
ThonySp
Fin du Sujet 06-07-10 à 17:18

Bonjour à tous,

J'ai cherché sur l'algorithme de Levenberg-Marquardt. Finalement c'est une méthode itérative et très intéressante pour mon problème.

J'ai conçu un programme basant sur cela et m'a donné des résultats très encourageants !

Je dis cela pour ceux qui vont où ont aura le même souci que moi.

Merci (et encore) à tous d'avoir répondu et de m'avoir guidé un peu en chemin.

Posté par
Pierre_D
re : Méthode Moindres Carrés pour une somme d'exponentielle 06-07-10 à 17:33

Bonne continuation, Thony.



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1742 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !