Recherche du point d'inflexion sans l'équation de la courbe

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
Kallysto
Messages: 9
Enregistré le: 04 Juil 2019, 11:42

Recherche du point d'inflexion sans l'équation de la courbe

par Kallysto » 04 Juil 2019, 12:00

Bonjour,

Dans le cadre de mon métier, je paramètres des régulateurs PID. Ces régulateurs gèrent des vitesses de ventilateurs puor maintenir un débit d'air, des ouvertures de vannes pour maintenir une température, etc.

Pour ce faire, on réalise "une réponse à un échelon". Si on prend le cas d'une vanne pour chauffer :
Je force ma vanne à 0 et je laisse tourner le système "un certain temps" jusqu'à ce que la température soit stable.
Ensuite, je la force à une certaine valeur, mettons 50% et j'attends que le système prenne sa nouvelle température.

Pendant tout ce temps, j'enregistre mes valeurs dans des fichiers CSV toutes les 1 à 5 secondes, ça depend du système ; j'ai des systèmes qui ont des temps de réaction très court, de l'ordre de 5 minutes et d'autre beaucoup plus long, de l'ordre de 30 minutes voir 1h.

Ensuite, avec Excel, je trace la courbe obtenue.

J'obtiens des courbes de ce style :
Image

Et comme indiqué, je dois trouver le point d'inflexion pour tracer ma tangente et faire quelques calculs derrière.
Problème, si dans les cours et les exo, le point d'inflexion est on ne peut plus évident, dès lors qu'on est sur un système réel, c'est plus la même chose.

Je cherche donc un moyen d'obtenir plus précisement le point d'inflexion de ma courbe que "ça doit être par là".

Google ne m'a pas beaucoup aidé : toutes les solutions sont à base de dérivée et je n'ai pas l'équation de ma courbe...

Merci d'avance pour vos lumières.

Précision sur mes fichiers excel :
J'ai une colonne avec le temps en seconde puis 1 colonne avec ma mesure de température et une avec l'ouverture de ma vanne.
Le moment où je demande l'ouverture de ma vanne, c'est le point 0 de ma courbe.



Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

Re: Recherche du point d'inflexion sans l'équation de la cou

par fatal_error » 04 Juil 2019, 12:08

slt,

si tu pouvais mettre ta donnée en ligne, genre un fichier texte à deux colonnes sur pastebin par exemple

ensuite, oui dérivée double.
Si tu as pas de valeurs abberrantes sur peux simplement considérer que la dérivée (simple) c'est
f'(x_i) = (f(x_(i+1)) - f(x_i))/(x_(i+1)-x_i) pour tous tes points (où x_i c'est les abscisses et f(x_i) l'ordonnée associée)
et
f"(x_i) = (f'(x_(i+1)) - f'(x_i))/(x_(i+1)-x_i)
si à un moment ton f"(x_i) est positif, puis ton f"(x_(i+1)) est négatif, ben ton point d'inflex est entre x_i et x_(i+1)

apres tu peux toujours tenter d'interpoler où est-ce que ca se trouve précisément au lieu de prendre (x_i + x_(i+1))/2 ...
la vie est une fête :)

Archytas
Habitué(e)
Messages: 1223
Enregistré le: 19 Fév 2012, 14:29

Re: Recherche du point d'inflexion sans l'équation de la cou

par Archytas » 04 Juil 2019, 12:09

Le point d'inflexion est représenté par un changement de monotonie de la pente.

Plus précisément sur ton graphe avant d'arriver au point d'inflexion la pente de la tangente est croissante puis elle décroît après le point d'inflexion.

Après calculer la pente c'est exactement calculer la dérivée. Donc si j'ai bien compris ça ne t'aide certainement pas. Cela dit sans la dérivée/pente je vois vraiment pas comment on peut s'en sortir.

Kallysto
Messages: 9
Enregistré le: 04 Juil 2019, 11:42

Re: Recherche du point d'inflexion sans l'équation de la cou

par Kallysto » 04 Juil 2019, 12:19

Bonjour à vous,

Merci pour vos réponses rapides, Je vous envoie mes fichiers dès que je suis de retour au bureau :)

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

Re: Recherche du point d'inflexion sans l'équation de la cou

par fatal_error » 04 Juil 2019, 12:35

exemple de code octave:
Code: Tout sélectionner
1;

%une fonction alacon qui ressemble
function y=f(x)
    y = atan(x-3);
endfunction
x=0:0.5:10;
y=f(x);

v=[0,0,0];
oldF2p = 0; % ancienne dérivée double
for i=1:length(x)
    v = [v(2:3) x(i)];
    fp1 = (f(v(2))-f(v(1)))/(v(2)-v(1)+1e-16); % dérivée simple en x(i)
    fp2 = (f(v(3))-f(v(2)))/(v(3)-v(2)+1e-16); % dérivée simple en x(i+1)
    f2p12 = (fp2 - fp1)/(x(2)-x(1)+1e-16);     % dérivée double en x(i)
    if oldF2p >= 0 && f2p12 < 0                % changement de signe de la dérivée double
        oldF2p
        inflexion = f2p12
        inflexIdx = i
    end
    oldF2p = f2p12;
end
plot(x,y,[x(inflexIdx), x(inflexIdx)],[min(y),max(y)])


tu peux tester sur https://octave-online.net/ par ex
la vie est une fête :)

Kallysto
Messages: 9
Enregistré le: 04 Juil 2019, 11:42

Re: Recherche du point d'inflexion sans l'équation de la cou

par Kallysto » 04 Juil 2019, 13:57

bonjour,

Voici les données :
https://pastebin.com/embed_js/73KFHEFe


Archytas a écrit:Le point d'inflexion est représenté par un changement de monotonie de la pente.

Plus précisément sur ton graphe avant d'arriver au point d'inflexion la pente de la tangente est croissante puis elle décroît après le point d'inflexion.

Après calculer la pente c'est exactement calculer la dérivée. Donc si j'ai bien compris ça ne t'aide certainement pas. Cela dit sans la dérivée/pente je vois vraiment pas comment on peut s'en sortir.


J'ai peut être pas tout compris, mais voici la solution que je vois en te lisant :

Sur ma courbes, prendre les coordonnées des points 1 et 3, calculer la droite qui passe en ces points, donc approximativement la tangente au point 2, calculer la pente de la tangente,
Recommencer pour les points 2 et 4 puis 3 et 5 etc.
Et comparer l'évolution des pentes ?

ça va être un peu long à programmer dans excel, mais ça peut se faire.

Kallysto
Messages: 9
Enregistré le: 04 Juil 2019, 11:42

Re: Recherche du point d'inflexion sans l'équation de la cou

par Kallysto » 04 Juil 2019, 14:30

fatal_error a écrit:exemple de code octave:
Code: Tout sélectionner
1;

%une fonction alacon qui ressemble
function y=f(x)
    y = atan(x-3);
endfunction
x=0:0.5:10;
y=f(x);

v=[0,0,0];
oldF2p = 0; % ancienne dérivée double
for i=1:length(x)
    v = [v(2:3) x(i)];
    fp1 = (f(v(2))-f(v(1)))/(v(2)-v(1)+1e-16); % dérivée simple en x(i)
    fp2 = (f(v(3))-f(v(2)))/(v(3)-v(2)+1e-16); % dérivée simple en x(i+1)
    f2p12 = (fp2 - fp1)/(x(2)-x(1)+1e-16);     % dérivée double en x(i)
    if oldF2p >= 0 && f2p12 < 0                % changement de signe de la dérivée double
        oldF2p
        inflexion = f2p12
        inflexIdx = i
    end
    oldF2p = f2p12;
end
plot(x,y,[x(inflexIdx), x(inflexIdx)],[min(y),max(y)])


tu peux tester sur https://octave-online.net/ par ex


ça me trace une courbe, mais je ne comprends pa sla finalité.
La courbe je l'ai : c'est mon relevé de points qui me la donne, le problème c'est le point d'inflexion sans avoir l'équation de la courbe.

GaBuZoMeu
Habitué(e)
Messages: 6020
Enregistré le: 05 Mai 2019, 10:07

Re: Recherche du point d'inflexion sans l'équation de la cou

par GaBuZoMeu » 04 Juil 2019, 14:40

Trouver le point d'inflexion sera forcément très imprécis : le point d'inflexion est le point où la courbe traverse la tangente d'inflexion, et la courbe et sa tangente d'inflexion ont un contact d'ordre 3 (définition de l'inflexion). La courbe reste collée à sa tangente d'inflexion un bob bout de temps (voir ton dessin pour s'en concaincre). Par contre, on peut avoir sans doute une évaluation relativement précise de la tangente d'inflexion.
D'où la question : pour ce que tu veux faire, tu as vraiment besoin du point d'inflexion, ou bien la tangente d'inflexion te suffit ?

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

Re: Recherche du point d'inflexion sans l'équation de la cou

par fatal_error » 04 Juil 2019, 15:14

independamment de ce que veut op,

faut voir que sa donnée c'est pas du luxe:
Image

en bleu la donnée sans lissage
en rouge avec un lissage week-ross-finger
et en noir les inflex déduites (forcément pas bonnes)

donc le pb principal c'est surtout que op nettoie sa donnée!
la vie est une fête :)

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

Re: Recherche du point d'inflexion sans l'équation de la cou

par fatal_error » 04 Juil 2019, 19:47

en essayant naivement d'enlever le bruit par fft on obtient
Image
on remarque les ptits picots
en supprimant les ptits picots on obtient
Image
dont le zoom au début est (je présume que le pt d'inflex intéressant est la deuxieme barre verticale??)
Image

du coup, je présume qu'il suffit apres de supprimer les points qui satisfont pas
en bidouillant de type: je garde que les points dont l'allure de la courbe "décroit avant" et "croit apres"
Image

mais ce n'est pas sûr que c'est ce que kallysto veut, et surtout on s'éloigne de la requête initiale je pense
la vie est une fête :)

Kallysto
Messages: 9
Enregistré le: 04 Juil 2019, 11:42

Re: Recherche du point d'inflexion sans l'équation de la cou

par Kallysto » 05 Juil 2019, 09:04

Bonjour,

Je vais faire des messages séparés pour arriver à vous répondre à tous.

fatal_error a écrit:independamment de ce que veut op,

faut voir que sa donnée c'est pas du luxe:
Image

en bleu la donnée sans lissage
en rouge avec un lissage week-ross-finger
et en noir les inflex déduites (forcément pas bonnes)

donc le pb principal c'est surtout que op nettoie sa donnée!


il t'en manque une grande partie là. Pour moi tu n'as que le début.
Il y a environ 1100 lignes de données.

A partir de 0, c'est quand je lance ma commande, les quelques lignes avant, servent à me déterminer mon maximum pour mes calculs ensuite.

Kallysto
Messages: 9
Enregistré le: 04 Juil 2019, 11:42

Re: Recherche du point d'inflexion sans l'équation de la cou

par Kallysto » 05 Juil 2019, 10:08

GaBuZoMeu a écrit:Trouver le point d'inflexion sera forcément très imprécis : le point d'inflexion est le point où la courbe traverse la tangente d'inflexion, et la courbe et sa tangente d'inflexion ont un contact d'ordre 3 (définition de l'inflexion). La courbe reste collée à sa tangente d'inflexion un bob bout de temps (voir ton dessin pour s'en concaincre). Par contre, on peut avoir sans doute une évaluation relativement précise de la tangente d'inflexion.
D'où la question : pour ce que tu veux faire, tu as vraiment besoin du point d'inflexion, ou bien la tangente d'inflexion te suffit ?


Je dois dire que mathématiquement, je suis dépassée par la question.

Mon bac S SI commence à dater (la vieille) et que ça soit pendant mes études sup ou au quotidien je dois dire que je me sers plus des SI que du S.
Le ratio doit être d'environ 95% /5% et dans les 5% c'est plus les bases de la physiques que des maths... Sauf si on considère que addition / soustraction / multiplication / division, c'est des maths de niveau bac S.

Donc les maths, y a des restes, mais c'est des restes quoi...

Concrètement, je cherche mon point d'inflexion pour tracer sa tangente : je prends le point juste au dessus et celui juste en dessous et je calcule automatiquement l'équation de ma tangente. C'est comme ça que j'ai programmé mon fichier Excel.
Je calcule sa valeur pour tous les points de ma courbe et je la trace.
Ensuite à partir de la tangente, je regarde quand elle coupe mon relevé en minimum et maximum (recherche automatique de la valeur et récupération de l'abscisse).
J'ai également besoin de la pente de la tangente, de l'abscisse à 63% du maximum de ma courbe.

A partir de ces données, je calcule mes paramètres PID de départ, que j'affine un peu après avoir regardé ce que ça donnait.

Est-ce que ça répond à ta question ?

Kallysto
Messages: 9
Enregistré le: 04 Juil 2019, 11:42

Re: Recherche du point d'inflexion sans l'équation de la cou

par Kallysto » 05 Juil 2019, 10:17

fatal_error a écrit:Image
dont le zoom au début est (je présume que le pt d'inflex intéressant est la deuxieme barre verticale??)
Image

du coup, je présume qu'il suffit apres de supprimer les points qui satisfont pas
en bidouillant de type: je garde que les points dont l'allure de la courbe "décroit avant" et "croit apres"
Image

mais ce n'est pas sûr que c'est ce que kallysto veut, et surtout on s'éloigne de la requête initiale je pense


C'est ça, mon le point que je recherche est dans la partie "verticale".
Concrètement, en ce moment mon problème c'est plus les régulation pour le raffraichissement que pour le chauffage, donc la courbe est inversée par rapport aux régulations de chauffage.

La donne que j'ai c'est ma sonde d'air ou d'eau, ça dépend, une PT1000. Je demande à mon automate un enregistrement toutes les secondes (le plus souvent) et lui m'enregistre le tout dans un fichier CSV. Je mets les données dans un fichier excel que j'ai fait qui me fait une partie des calculs automatiquement.

Je cherche à automatiser un peu plus car je croule sous les demandes vu qu'apparemment je suis la seule de la région à être capable de faire ces relevés et ces calculs.

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

Re: Recherche du point d'inflexion sans l'équation de la cou

par fatal_error » 05 Juil 2019, 12:04

c'est pas facile de généraliser parce que tu donnes les données au compte goutte.
ton premier schéma ne reflète pas tes points.
les points que tu donnes contiennent des données à ignorer (avant t=0)
ton point d'inflexion est particulier puisqu'il faut une "verticale", mais est-ce le cas pour toutes tes données
tu ne décris pas non plus où est ton point (quelle abscisse sur le schéma?)
tu invoques une automatisation de ton xls mais ne dit pas ce qui est automatisé et ce que tu veux automatiser de ce que tu fais actuellement manuellement.

de manière un peu plus distancée, je t'ai montré
- qu'il faut nettoyer tes points
- que tu peux trouver un pt d'inflex en parcourant tes points
- que si tu as des conditions métier évidemment tu t'en sers pour restreindre les points elligibles..

on t'as également parlé de tangentes, dont l'idée je présume est de faire glisser sur une plage de points en minimisant les moindre carrés sur cette plage? (et en tout cas ici ca colle pas mal vu que comme par hasard la courbe la plus "clean" est dans la partie verticale..)

a toi de bidouiller un peu, je pense que t'as tout en main?
la vie est une fête :)

Kallysto
Messages: 9
Enregistré le: 04 Juil 2019, 11:42

Re: Recherche du point d'inflexion sans l'équation de la cou

par Kallysto » 05 Juil 2019, 16:00

J'ai pas du être claire, je suis désolée. Pardon

Je reprends.

Je cherche à calculer ce qu'on appelle les paramètres PID d'un régulateur PID.

La méthode est la suivante :
On met le système dans une position de départ "stable". Ensuite, on force l'actionneur qu'on veut réguler et on enregistre l'effet sur le capteur qui servira de mesure pour la régulation.

Une fois ces points obtenus, on trace la courbe. En ce moment, je régule du froid, donc la courbe est inversée par rapport à l'exemple tiré d'un cours trouvé sur internet. Concrètement en cours, les seuls exemples qu'on voit ce sont des actions dites positives : plus j'augmente ma commande plus ma mesure augmente.
Typiquement : plus je mets d'eau chaude dans le radiateur, plus la pièce est chaude.

Sauf que moi en cette saison, c'est pour du refroidissement donc plus je mets d'eau froide plus la pièce est fraiche.

Donc j'obtiens ce genre de courbe :
Image

Ici, j'ai défini un point d'inflexion en mode "bah ça doit être par là" (118 ; 21,1). J'ai ensuite pris les coordonnées du point juste avant et de celui juste après, y = ax+b et j'ai tracé ma tangente au point que j'avais défini.

Ensuite avec cette tangente, je récupère les infos suivantes pour mes calculs :
-> abscisse croisement tangente et minimum de la courbe, (donc un temps en seconde)
-> abscisse croisement tangente et maximum de la courbe, (donc un temps en seconde)
-> valeur de ma tangente pour une abscisse de 0,
-> pente de ma tangente.

Et également le temps pour que ma mesure atteigne 63% de son amplitude.

Avec tout ça, j'ai 3 méthodes de calcul qui me donne les paramètres P, I et D de mes régulateurs. Enfin des paramètres de départ, ensuite je regarde comment ça se comporte et j'affine un peu le truc.

Les calculs sont fait automatiquement dès que j'inscris la valeur dans la case. Une partie des recherches des abscisse aussi j'ai tenté de la faire automatiquement mais j'ai des bugg encore.. Mais c'est pas ça qui me prend le plus de temps.

Par exemple pour la courbe donnée, j'obtiens ces tableaux :
Image

Souvent, je dois faire plusieurs essais avant de trouver un point d'inflexion et donc une tangente qui me donne des résultats pas trop mal.

J'aimerai donc faciliter ma recherche du point d'inflexion ou du moins de la tangente à ma courbe en ce point pour passer moins de temps sur le sujet.

Je peux mettre le fichier excel à dispo sur Wetransfer au besoin.

Est-ce OK pour ce que je cherche à faire ?

Pour les solutions :
-> Nettoyer la courbe, ok, comment ? en faisant des moyennes sur 3 points glissants par exemple ?
Sachant que j'ai déjà un peu nettoyé en enlevant les points doublons et les quelques ratés d'enregistrements (la fonction que j'utilise n'est normalement pas faite pour enregistrer aussi souvent)

Donc la solution des tangentes avec les points A et C puis B et D, puis C et E etc ça donnerait quelque chose de fiable à regarder ?

Là ce que je viens de tenter c'est de regarder l'écart entre 2 points de mesure et je constate qu'en abscisse 98, j'ai le plus gros écart à -0,4. et qu'en suite, l'écart rediminue.
Je peux donc en déduire que mon point d'inflexion est en 98 ?

GaBuZoMeu
Habitué(e)
Messages: 6020
Enregistré le: 05 Mai 2019, 10:07

Re: Recherche du point d'inflexion sans l'équation de la cou

par GaBuZoMeu » 05 Juil 2019, 16:46

Je répète : chercher "le" point d'inflexion me semble illusoire. Et en fait, tout ce dont tu as besoin est la tangente d'inflexion, d'après ce que tu as écrit.
La droite que tu as tracée ne me semble pas terrible de ce point de vue

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

Re: Recherche du point d'inflexion sans l'équation de la cou

par fatal_error » 06 Juil 2019, 09:38

bj,

@Kallysto, est-il possible d'avoir d'autres series de points (avec le point d'inflex que tu déduis/attendu?)
même si gbzm deconseille de rechercher le point d'inflex, je suis curieux d'insister dans cette voie.

Image
la vie est une fête :)

danyL
Membre Rationnel
Messages: 681
Enregistré le: 03 Jan 2015, 14:29

Re: Recherche du point d'inflexion sans l'équation de la cou

par danyL » 06 Juil 2019, 15:34

je cherche mon point d'inflexion pour tracer sa tangente : je prends le point juste au dessus et celui juste en dessous et je calcule automatiquement l'équation de ma tangente.

"à l'oeil", en regardant la courbe et la tangente trouvée, peut etre tu obtiendrais un meilleur résultat en prenant non pas les poins juste avant et après le point d'inflexion, mais des points plus éloignés

lyceen95
Membre Complexe
Messages: 2255
Enregistré le: 15 Juin 2019, 00:42

Re: Recherche du point d'inflexion sans l'équation de la cou

par lyceen95 » 06 Juil 2019, 16:01

J'ai expérimenté, mais mon message s'est perdu quand j'ai voulu l'envoyer ; donc je vais résumer.
J'ai fait quelques calculs dans Excel. Colonne A = les X ( -100, -98 , etc) , colonne B, l'autre mesure.
En colonne C, je mets C3 = moyenne(C2:C4) : moyenne mobile. Et copier coller sur toute la colonne.
Idem en colonne D
Idem en colonne E.
Comme les données ont quand même beaucoup de 'bruit', 3 étapes de lissage au minimum.
En colonne F : F6=(E5+E7)/2- E6
Quand ce nombre est positif, la corde est au-dessus de la courbe, autrement dit, la concavité est vers le haut.
Et quand il est négatif, la concavité est vers le bas.
On cherche donc quand ce nombre passe de négatif à positif.

Problème, on a des oscillations positif/négatif.
Je refais donc des moyennes mobiles : G7 = moyenne(F6:F8)
Puis idem colonne H et colonne I
Et on constate que cet indicateur est négatif jusqu'à la ligne correspondant à x=94, puis devent positif au-delà. Donc le point d'inflexion est proche de X=95.
Ce n'est pas très rigoureux sur le plan mathématique, à cause de toutes ces moyennes mobiles, mais c'est pragmatique.

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 78 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite