IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Régression polynomiale, logarithmique fonctions quelconques


Sujet :

Algorithmes et structures de données

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 262
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Non dirponible
    Inscrit en
    Mai 2024
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Non dirponible

    Informations forums :
    Inscription : Mai 2024
    Messages : 9
    Par défaut Régression polynomiale, logarithmique fonctions quelconques
    Bonjour

    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.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Non dirponible
    Inscrit en
    Mai 2024
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Non dirponible

    Informations forums :
    Inscription : Mai 2024
    Messages : 9
    Par défaut 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) ?

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 175
    Par défaut
    J'ai l'impression qu'on est en plus dans de la régression multiple, donc un 'individu' A(i) serait (x0i, x1i, ...., xni, yi)
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Non dirponible
    Inscrit en
    Mai 2024
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Non dirponible

    Informations forums :
    Inscription : Mai 2024
    Messages : 9
    Par défaut Envoyer un message dans la discussion:
    Citation Envoyé par tbc92 Voir le message
    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 ...

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Non dirponible
    Inscrit en
    Mai 2024
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Non dirponible

    Informations forums :
    Inscription : Mai 2024
    Messages : 9
    Par défaut 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) ?

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 461
    Billets dans le blog
    67
    Par défaut
    Bonjour,

    Une régression par la méthode des moindres carrés, j'ai trouvé ce lien :

    https://mathworld.wolfram.com/LeastS...garithmic.html

    je ne sais pas si ça peut aider..
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Non dirponible
    Inscrit en
    Mai 2024
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Non dirponible

    Informations forums :
    Inscription : Mai 2024
    Messages : 9
    Par défaut Régression polynomiale, logarithmique fonctions quelconques
    Bonjour,

    Citation Envoyé par User Voir le message
    ... Une régression par la méthode des moindres carrés, j'ai trouvé ce lien :

    https://mathworld.wolfram.com/LeastS...garithmic.html

    je ne sais pas si ça peut aider..
    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.

  9. #9
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 461
    Billets dans le blog
    67
    Par défaut c fixé
    Bonjour,

    Oui, en fait tout dépend bien sûr du niveau du demandeur. On pourrait aussi poser x'=x+c en fixant c pour avoir toujours x'>ε>0 , et on évalue ensuite a et b dans g(x') = a + b*ln(x') à l'aide des formules données dans le lien.

    On retrouverait ainsi l'expression de f(x) = a + b*ln(x+c)

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  10. #10
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 262
    Par défaut
    Waptia, merci pour la simplification, c'est déjà une inconnue en moins.
    Je vais tester ta méthode.
    Pour un tableau et un exemple voici celui-là : https://les-mathematiques.net/vanill...rtir-dun-nuage
    Mon but est de créer des fonctions logarithmiques ou exponentielles à partir de tableaux de valeurs d'enthalpie, entropie,... de la vapeur.
    User Ta méthode semble très bien je vais la tester aussi.
    Pour une fonction simple j'avais trouvé ça :
    Nom : Régression courbe.png
Affichages : 101
Taille : 59,5 Ko
    Sinon à force de fouiller sur le net j'ai découvert l'algorithme de Gauss-Newton qui est une méthode de résolution des problèmes de moindres carrés non linéaires.
    https://fr.wikipedia.org/wiki/Algori...e_Gauss-Newton
    Il a l'avantage de ne faire appel qu'à la dérivée première et pas seconde etc et convenir pour "n'importe" quelle fonction.
    Je n'ai trouvé qu'un seul programme qui traite du sujet mais je suis en train de me battre avec Java pour transcrire ce programme :https://www.codeproject.com/Articles...orithm-in-Java
    Si je parviens à faire tourner ça je reviendrai vers vous.
    Images attachées Images attachées   

  11. #11
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 175
    Par défaut
    Sur ces questions, quand on cherche ne serait-ce qu'une droite, la méthode historique est la méthode des moindres carrés.
    Nom : Capture_moindres_carres.PNG
Affichages : 95
Taille : 41,9 Ko
    Cette méthode cherche à minimiser la somme des carrés des distances des segments rouges. Pourquoi ces segments 'verticaux' et pas les segments que j'ai représentés en noir, pourquoi les carrés des distances, et pas les distances elles-mêmes ? Parce que sans ordinateur, la méthode choisie a l'énorme avantage d'être faisable. C'est une très bonne raison, et on comprend tout à fait le succès de cette méthode.
    Avec les outils de calculs d'aujourd'hui, chercher par tâtonnement à minimiser la somme des distances (et pas des carrés des distances), minimiser la somme des distances ou des carrés des distances des segments noirs, c'est possible.

    Pourquoi les segments noirs et pas les segments rouges ?
    Quand on cherche une droite y = ax+b à partir d'une dizaine de points, ou qu'on cherche la droite x=cy+d à partir des mêmes points, on ne trouve pas la même droite. Chacune des 2 droites a une certaine utilité, indéniable, mais la droite qui 'résume' le mieux le nuage de points, c'est une autre, c'est celle qui est obtenue qi on s'intéresse aux segments noirs.
    Et idem si on s'attaque a des courbes a + b*ln(x+c) +y=0
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  12. #12
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 262
    Par défaut
    Ou je n'ai rien compris et c'est ce que j'espère mais ce que tu dis est vrai pour une droite sinon je ne vois pas pourquoi Gauss et Newton auraient inventé la régression non linéaire.
    Enfin je crois.

  13. #13
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 175
    Par défaut
    Avançons pas à pas.
    Prenons 6 points : (0,0)(1,10)(2,1)(3,11)(4,2)(5,12)
    On cherche la droite qui représente le mieux ces 8 points. On cherche une droite. (j'ai mis en gras le mot 'représente', j'ai volontairement exclu le mot régression).
    Utilise les outils de Gauss ou Newton, regarde le résultat, et dis moi si tu es satisfait.
    Je précise, je ne suis pas du tout en train de dire que Gauss et Newton étaient nuls .... je dis juste que les outils qu'ils ont mis au point étaient adaptés à une certaine époque, quand les calculatrices n'existaient pas.

    On peut aussi se poser la question : pourquoi ils ont choisi de minimiser la somme des carrés des distances... et pas la somme des distances. Mais, ça, ce sera dans un 2nd temps.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Non dirponible
    Inscrit en
    Mai 2024
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Non dirponible

    Informations forums :
    Inscription : Mai 2024
    Messages : 9
    Par défaut Régression polynomiale, logarithmique fonctions quelconques
    Bonjour

    Citation Envoyé par BBouille Voir le message
    ... 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 ( 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).

  15. #15
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 262
    Par défaut
    tbc92, je ne cherche pas une droite mais une fonction quelconque.
    Je ne pense pas que Newton ou Gauss pouvaient calculer ce genre de matrices comme nous pouvons le faire maintenant grâce aux ordinateurs.
    L'algorithme de Gauss-Newton est une méthode de résolution des problèmes de moindres carrés non linéaires très précise.
    Mais je suis toujours en train de traduire ce que Wikipedia explique en un programme.
    Waptia, arf me v'là refait, je suis tombé sur un spécialiste de l'enthalpie et de l'entropie, merci.
    Pour les valeurs, on trouve 36000 tableaux de ce genre de valeurs sur le net.
    Sinon on trouve ici la méthode et un petit tableau de valeurs sur lequel je base mon programme :https://fr.wikipedia.org/wiki/Algori...e_Gauss-Newton
    Sinon il y a ça : https://les-mathematiques.net/vanill...rtir-dun-nuage
    Je n'ai pas Mathlab et même j'ai envie de comprendre plutôt que de résoudre ça en une ligne de commande, par contre je ferai un peu de pub pour un logiciel génial pour les étudiants ou pour n'importe qui d'ailleurs, après ça on n'utilise plus Excel sauf pour de grands tableaux de valeurs : https://calcpad.eu/
    Je vais essayer de comprendre tout ce que tu as énoncé et de l'appliquer.
    Le lien vers le programme en Java semble avoir disparu, me v'là beau.

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/09/2015, 10h43
  2. calcul de la derivée d'une fonction quelconque
    Par s-ehtp dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 09/10/2013, 02h37
  3. [Débutant] la dérivée première d'une fonction quelconque
    Par fatima_zohra_M2 dans le forum MATLAB
    Réponses: 16
    Dernier message: 21/12/2011, 11h12
  4. Dérivation fonction quelconque vb
    Par bdsss dans le forum VB.NET
    Réponses: 3
    Dernier message: 16/06/2008, 16h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo