Régression polynomiale, logarithmique fonctions quelconques
Bonjour les amis,
Pour le moment je parviens à déterminer les coefficients d'un polynôme d'ordre n à partir de points et je cherche à calculer les coefficients d'une fonction logarithmique du genre :
Code:
f(x) = a*ln(b*x + c) + d
Pour les polynômes je crée deux matrices et utilise la méthode de Cramer pour calculer les coefficients du polynôme.
Pour remplir la matrice j'utilise
Code:
c(i,j) = c(i,j) + x(k)^(i+j)
k variant de 1 au nombre de points et i,j de 1 au degré et pour l'autre matrice :
Code:
b(i) = b(i) + y(j) * x(j)^i
Auriez-vous une idée pour remplir cette matrice avec la fonction logarithmique?
Plutôt qu'une régression polynômiale ce serait une logarithmique.
Régression polynomiale, logarithmique fonctions quelconques
Bonjour :D
Il faut si j'ai bien compris trouver les 4 coefficients (a, b, c, d) vérifiant les équations
F(xk) = a*ln(b*xk + c) + d,
l'indice (k) variant de 1 à Np (nombre de points, au moins égal à 4).
Il ne s'agit malheureusement pas d'un système linéaire, en raison de la présence de la fonction logarithme, dont l'argument dépend de deux des inconnues (b et c); le procédé classique de résolution est donc ici inapplicable.
Tu ne précise d'ailleurs pas s'il s'agit d'un simple système de 4 équations à 4 inconnues, ou s'il s'agit d'un système surdéterminé (Np > 4), lequel demande de recourir à une recherche des moindres carrés.
On peut ici envisager l'approche progressive du minimum de la fonction
G(a, b, c, d) = ∑k=1Np(yk - a*Ln(b*xk + c) - d)2
en repérant la plus faible des 16 nouvelles valeurs de G(a', b', c', d') obtenues à partir d'un quadruplet (a, b, c, d) donné, et correspondant à
a' = a ± ∆a , b' = b ± ∆b , c' = c ± ∆c , d = d ± ∆d .
Il serait bon de partir de valeurs initiales (a0, b0, c0, d0) pas trop éloignées de la solution recherchée, afin que la suite obtenue ne s'égare pas dans un minimum secondaire; as-tu une idée (même très approchée) de cette solution ?
Il faudra aussi partir de bonnes valeurs pour les incréments (∆a, ∆b, ∆c, ∆d) afin d'éviter une évolution trop lente (si les valeurs retenues sont trop faibles) ou l'explosion numérique (dans le cas de valeurs trop élevées).
L'algorithme risque d'apparaître assez lourd, et de donner des solutions peu précises, même avec des données numériques au format Extended.
Régression polynomiale, logarithmique fonctions quelconques
Une localisation approximative du minimum de la fonction G(a, b, c, d) est envisageable à partir d'une estimation grossière des valeurs extrêmes (minimale et maximale) de chacun des paramètres (a, b, c, d):
Amin et Amax, Bmin et Bmax ... etc ,
en faisant par ex. intervenir 4 entiers naturels inférieurs à 5: (Ia, Ib, Ic, Id); ils permettent l'énumération de toutes les combinaisons possibles sur le domaine envisagé par l'emploi des relations:
a = Amin + (Ia/4)*(Amax - Amin) ; b = Bmin + (Ib/4)*(Bmax - Bmin) ;
c = Cmin + (Ic/4)*(Cmax - Cmin) ; d = Dmin + (Id/4)*(Dmax - Dmin) .
Il y a dans le cas envisagé 54 = 625 combinaisons, l'ordinateur effectuera rapidement les calculs.
Ce procédé peut conduire à un autre algorithme de recherche du minimum absolu de (G).
Disposes-tu d'un tableau des valeurs du couple (xk, yk) ?
Envoyer un message dans la discussion:
Citation:
Envoyé par
tbc92
J'ai l'impression qu'on est en plus dans de la régression multiple ...
Effectivement, le gros inconvénient étant que la relation ne se présente pas sous la forme d'une combinaison linéaire
y = a*F1(x) + b*F2(x) + c*F3(x) + d*F4(x) ...
Les dérivées partielles de la somme des carrés G(a, b, c, d) ne conduisent pas à des relations simples.
Le procédé bourrin précédemment suggéré devrait permettre de cerner au moins une solution, tant que l'argument du logarithme (b*xk + c) ne vient pas à s'annuler ou changer de signe ...
Régression polynomiale, logarithmique fonctions quelconques
Petite remarque plutôt encourageante: le nombre de paramètres indépendants présents dans l'expression
F(x) = a*ln(b*x + c) + d
peut être réduit à trois; il vient en effet, si (b) est un terme strictement positif:
F(x) = a*ln(b*(x + c/b)) + d = a*ln(b) + a*ln(x + c/b) + d ,
soit finalement:
F(x) = a*ln(x + c') + b'
si l'on convient de poser: b' = d + a*ln(b) et c' = c/b .
Peut-on voir un tableau de données (xk, yk) ?
Régression polynomiale, logarithmique fonctions quelconques
Bonjour, :D
Citation:
Envoyé par
User
Malheureusement, ce serait trop facile ! La régression traitée porte sur une relation du type: y=a + b*lnx ,
alors qu'ici l'argument du logarithme dépend d'un troisième terme: F(x) = a*ln(x + c') + b' .
Le lien est néanmoins intéressant.
On pourrait procéder à une régression à c constant arbitrairement fixé sur la fonction H(x) = a + b*Ln(x + c) ,
en prenant pour le 3me paramètre (c) des valeurs vraisemblables réparties sur le domaine
[0.5*Min(x1, x2 ... xNp] ; 2*Max(x1, x2 ... xNp] ,
puis repérer, une fois calculée pour chaque valeur de (c) la valeur exacte du coefficient de corrélation (r), la valeur minimale de la dispersion relative δ = (1 - r2)1/2 .
Le procédé pourrait être ensuite repris sur un domaine plus étroit pour conduire à des résultats plus précis, correspondant à des valeurs de (δ) encore plus faibles; la solution (a0, b0, c0) la plus appropriée correspondant au minimum de (δ), idéalement nul.
Régression polynomiale, logarithmique fonctions quelconques
Bonjour :D
Citation:
Envoyé par
BBouille
... Mon but est de créer des fonctions logarithmiques ou exponentielles à partir de tableaux de valeurs d'enthalpie, entropie,... de la vapeur ...
Voilà enfin une information précise ! Pourrais-tu fournir un échantillon des données sur lesquelles tu souhaiterais travailler ?
Ce qu'il faut bien comprendre, c'est que les statistiques ne fournissent aucune indication sur le choix des fonctions mathématiques susceptibles d'intervenir; l'opportunité de ces dernières provient de l'étude des phénomènes observés dans des domaines en principe extérieurs aux mathématiques, qu'il s'agisse de sciences physiques, biologie, médecine, économie ou société.
Petits rappels théoriques (:help: pas de panique):
Pour un système maintenu en équilibre à température et sous pression fixes, dans lequel intervient une transformation réversible (physique ou chimique), les variations en fonction de la température de la constante d'équilibre (K) sont paramétrées par une relation de la forme
Ln(K) = A - B/T + CLn(T) + DT .
Dans le cas de la vaporisation réversible d'un liquide pur, (K) s'identifie à la pression de vapeur saturante.
La transformation envisagée est caractérisée par plusieurs fonctions thermodynamiques dépendant de la température, rapportées soit à l'unité de quantité de matière (la mole), soit à l'unité de masse (le kilogramme); il s'agit donc de grandeurs molaires ou massiques:
# la variation d'enthalpie libre standard ∆G° = -RTLn(k) ;
# la variation d'entropie standard ∆S° = -(d∆G°/dT) ;
# la variation d'enthalpie standard ∆H° = ∆G° + T∆S° , qui vérifie aussi la relation ∆H° = RT2(dLnK/dT);
# la variation de la capacité thermique isobare, qui se rattache aux dérivées de deux des fonctions précédentes:
∆Cp° = (d∆H°/dT) = T(d∆S°/dT .
Il est alors possible de déduire les expressions de toutes ces grandeurs de celle proposée pou (LnK):
# ∆G° = R(B - AT -CTLn(T) - DT2) ;
# ∆S° = R(A+ C + CLn(T) + 2DT) ;
# ∆H° = R(B + CT + DT2) ou encore ∆H° = RT2(B/T2 + C/T + D) (même résultat);
# ∆Cp° = R(C + 2DT) ou encore ∆Cp° = RT(C/T + 2D) .
Dans le cas le plus simple, les variations d'enthalpie et d'entropie standard sont constantes, indépendantes de la température, ce qui implique une variation de capacité thermique isobare nulle: ∆Cp° = 0 , d'où: C = 0 et D = 0 .
Les grandeurs précédentes admettent alors pour expressions simplifiées:
Ln(K) = A - B/T ; ∆G° = R(B - AT) ; ∆S° = R(A+ C) ; ∆H° = RB .
La détermination des constantes (A, B, C) par régression linéaire ne pose alors aucune difficulté.
C'est un peu plus compliqué dans le cas d"une variation de capacité thermique isobare non nulle (C≠ 0) mais constante (D = 0).