Découper une courbe en plusieurs courbes de tendance linéaire

Bonjour,

J'ai une série de mesures qui une fois tracées me donnent une courbe similaire à une courbe de traction classique (contrainte en fonction de la déformation) que je peux décomposer en 2 parties majeures : un début linéaire et la suite qui peut être décrite par une courbe de tendance polynomiale.
Certaines de mes courbes sont bruitées et je souhaiterai :

1) Lisser d'abord la courbe.

2) Décomposer ensuite la courbe en domaines linéaires. Et c'est là où je coince. Une courbe de tendance linéaire sur l'ensemble des données ne décrit pas correctement ma courbe. J'ai délimité à la main les principaux domaines linéaires puis j'ai tracé les courbes de tendance linéaires des différentes plages de données que j'ai délimité "manuellement" (Par manuellement, je veux dire que j'ai tracé des droites sur la courbe et délimité ainsi les points ou les intervalles des différentes parties linéaires). C'est cette partie que je veux "automatiser" car j'ai plusieurs courbes à traiter. En gros, savez-vous si Excel propose de fractionner une courbe en plusieurs tendances linaires et d'afficher l'équation de chaque courbe? Ou un moyen d'y aboutir?

3) Enfin, trouver les valeurs "y" pour un "x" donné soit directement sur ma courbe ou sur la courbe de tendance linéaire qui la décrit.

On m'a dit que ce que je cherche est possible grâce à " Moyenne mobile", "un rééchantillonnage", les fonctions "RechercheV" et "Index".
Pour l'instant j'ai réussi à faire une moyenne mobile via l'utilitaire d'analyse, qui si je comprends bien m'a permis de bien lisser ma courbe à condition que je règle bien l'intervalle. Mais je bloque pour les étapes d'après.

Est-ce que qqn aurait une idée? Merci d'avance pour votre aide.

Le plus simple est de fragmenter les données en deux séries, comme dans l'exemple ci-joint.

209classeur21.xlsx (13.63 Ko)

Merci pour ta réponse et ton fichier. Alors en effet c'est ce que j'ai fait, le hic c'est qu'il faut que je le délimite à la main les domaines et c'est un peu laborieux vu le nombre de données que j'ai et de variations de la courbe.

Bonsoir,

en reprenant l'exemple de caspi, une proposition. basée sur une recherche des droites de regression qui donnent le meilleur coefficient de regression. on calcule les droites pour tous les intervalles qui coupent les données en 2 séries consécutives.

(exemple pour une une série de 10 données : 1-3 et 4-10 puis 1-4 et 5-10 puis 1-5 et 6-10 etc...)

Sub aligner()
    dl = Cells(Rows.Count, 1).End(xlUp).Row 'x
    'on recherche les 2 droites de tendances qui ont le meilleur fit avec les données
    minrq = 1000000000# 'meilleur fit trouvé
    For i = 3 To dl ' on prend de intervalles de 1 à 3 à 1 à dl
        t = Application.WorksheetFunction.LinEst(Cells(1, 2).Resize(i, 1), Cells(1, 1).Resize(i, 1), True, True)
        rq = t(3, 1) 'R² de la droite de tendance pour le premier intervalle de données
        If i = dl Then
            rq2 = 1
        Else
            t2 = Application.WorksheetFunction.LinEst(Cells(i, 2).Resize(dl - i, 1), Cells(i, 1).Resize(dl - i, 1), True, True)
            rq2 = t2(3, 1) 'R² de la droite de tendance pour le second intervalle de données
        End If
        'on vérifie si les 2 intervalles donnent des R² optimums
        If Abs(rq + rq2 - 2) < minrq Then minrq = Abs(rq + rq2 - 2): minrqi = i ' on mémorise l'optimum et la valeur de i associée
    Next i
    i = minrqi ' l'optimum est atteint quand on coupe la série en ligne i
    Cells(i, 2).Resize(dl - 1, 1).Cut Cells(i, 3) ' on déplace les données pour créer une deuxième série.
End Sub
58classeur21.xlsm (16.57 Ko)
Rechercher des sujets similaires à "decouper courbe courbes tendance lineaire"