Régression plane

Accueil

Régression d'une fonction

Régression selon le critère des moindres carrés

9 Régression multiple du 10ème degré

1 Combinaison linéaire de fonctions

2 Application au lissage polynomial

3 Droite des moindres carrés

4 Parabole des moindres carrés

5 Polynôme du troisième degré

6 Lissage Savitzky et Golay

7 Régression multiple

8 Régression plane

9 Régression multiple du 10ème degré

 

10 Régression d'une fonction

 


  Dans la page précédente le programme "Rgrs_Mult" réalise une régression plane. Ici il sera utilisé jusqu'au 10ème degré. Après une brève présentation de la structure de son sous-programme essentiel , RGRS_MULT , quelques démo souligneront ses possibilités


  Si l'on se contentait d'un polynôme de régression du second degré du type :

le système d'équations  serait :

la sommation portant sur tous les points concernés.

  La résolution du système relèverait déjà du calcul matriciel.

  La description d'une surface un peu tourmentée exigera de recourir à des polynômes de degrés supérieurs.
  Ainsi, au dixième degré, elle sera décrite par une équation comportant les 66 coefficients :

dont la résolution nécessite l'inversion d'une matrice 66 x 66. Au delà, la double précision devient insuffisante, l'inversion de la matrice serait impérativement effectuée en multi-précision.

  Le programme étant susceptible de traiter des régressions du premier au dixième degré, la première étape consiste à déterminer le nombre de termes du polynôme c'est à dire les dimensions de la matrice correspondant au degré choisi, selon une formule semblable à celle qui exprime la somme des N premiers nombres.

 
'Calcul des dimensions de la matrice
Dim_Mat = (Deg + 1) * (Deg + 2) / 2

 

  La seconde étape est consacrée au calcul des deux suites d'exposants de x et de y dans la suite des termes du tableau ci-dessus :  0    0 1    0 1 2    0 1 2 3    0 1 2 3 4 ... pour x et :   0   1 0    2 1 0    3 2 1 0    4 3 2 1 0 ... , pour y.

  Qui correspondent aux exposants de x et de y dans la suite des termes : Constante , Y, X , Y^2 , YX , X^2, Y^3 , Y2X , YX^2, X^3, ...

'Calcul des deux suites d'exposants :
K = 0
For I = 0 To Deg
    For J = 0 To I
        Exp_I(K) = J
        Exp_J(K) = I - J
        K = K + 1
    Next J
Next I

 
  Disposant de ces séries d'exposants, les deux matrices sont constituées dans la troisième étape

'Constitution de la matrice carrée
For I = 1 To Dim_Mat
    For J = 1 To Dim_Mat
        Som = 0
        For K = 1 To N_Pt
            Som = Som + XYZ(1, K) ^ (Exp_I(Dim_Mat - J) + Exp_I(Dim_Mat - I)) * XYZ(2, K) ^ (Exp_J(Dim_Mat - J) + Exp_J(Dim_Mat - I))
        Next K
        A(I, J) = Som
    Next J
Next I

'Constitution de la matrice ligne

For I = 1 To Dim_Mat
    Som = 0
    For K = 1 To N_Pt
        Som = Som + XYZ(1, K) ^ Exp_I(Dim_Mat - I) * XYZ(2, K) ^ Exp_J(Dim_Mat - I) * XYZ(3, K)
    Next K
    Mat_Ligne(I) = Som
Next I

  Suit l'inversion de matrice, décrite avec l'ensemble du sous-programme, dans l'annexe 3.

  Le sous-programme se termine par le calcul des coefficients du polynômes en multipliant la matrice inversée par la matrice ligne.


  Lignes de niveau

  Le tracé des lignes de niveau sur le domaine de mesure apporte une représentation classique de  la topologie.

  Les lignes de niveau résultent d'un traitement graphique selon le procédé décrit à propos des isothermes : "... seront noircies toutes les cellules dont au moins 1 des 8 plus proches voisines appartient à une zone de température inférieure."

  Lignes de plus grande pente

  Elles seront tracées pas par pas. Disposant de l'équation de la surface des moindres carrés, le programme calcule les deux dérivées en un point  x1,y1.

'Calcul de la dérivée partielle par rapport à X ( en évitant tout risque d'exposant négatif )
Som_dZ_dX = 0
For K = 1 To Dim_Mat
E1 = Exp_I(K - 1) - 1
E2 = Exp_J(K - 1)
If E1 >= 0 And E2 >= 0 Then Som_dZ_dX = Som_dZ_dX + Coef(K) * Exp_I(K - 1) * ((X1 / 100) ^ E1) * (((500 - Y1) / 100) ^ E2)
Next K

'Calcul de la dérivée partielle par rapport à Y ( en évitant tout risque d'exposant négatif )
Som_dZ_dY = 0
For K = 1 To Dim_Mat
E1 = Exp_I(K - 1)
E2 = Exp_J(K - 1) - 1
If E1 >= 0 And E2 >= 0 Then Som_dZ_dY = Som_dZ_dY + Coef(K) * ((X1 / 100) ^ E1) * Exp_J(K - 1) * (((500 - Y1) / 100) ^ E2)
Next K

dérivées permettant  de calculer les coordonnées du point suivant, en pondérant d'un pas prédéfini et par la racine de la somme de carrés des deux dérivées

'Défini la seconde extrémité d'un segment de pente
Q = Sqr(Som_dZ_dX ^ 2 + Som_dZ_dY ^ 2)
If Q <> 0 Then Relais = Sens * Pas / Q Else Relais = 0.1
X2 = X1 + Relais * Som_dZ_dX
Y2 = Y1 - Relais * Som_dZ_dY

qui se traduit géométriquement par :


  La variable " Sens " prendra successivement les valeurs -1 et +1 afin d'explorez la ligne de plus grande pente dans les deux sens.

  Après avoir tracé le segment joignant Xn,Yn à Xn+1,Yn+1 l'opération reprend depuis Xn+1,Yn+1 pour définir le segment suivant.

  Le procédé est aussi exploité pour le tracé des lignes de flux thermique dans les pages " Diffusion de la chaleur " .


Télécharger Rgrs_Mult

  Cette version est téléchargeable dans  " C:\Program Files " de la même façon que Rgrs_Pol .
  Bien qu'il soit possible d'y introduire vos données personnelles, soit manuellement , soit sous forme de fichier, il sera préférable d'incorporer le sous-programme "Public Sub Rgrs_Mult" dans votre propre programme. En effet, dans ce programme de démonstration, les coordonnées étant limitées à 0<x<5  et 0<y< 5 , les changements de variables sont impératifs

Télécharger Rgrs_Mult

  L'aide décrit les différentes fonctions du menu.


Démos

  La première, s'applique sur 36 points de la "selle de cheval" d'équation :

Z = X² + 5 (Y-X ) - Y²

  Courbes de niveau et lignes de plus grande pente y forment deux réseaux orthogonaux particulièrement esthétiques

  Les deux suivantes constitue un test de fiabilité du programme. Il s'agit de représenter une excavation carrée.

  Dans la deuxième les coordonnées sont régulièrement réparties et les profondeurs correspondent exactement à la formule définissant la forme du terrain. Les coefficients du polynôme et les profondeurs lissées restituent parfaitement les valeurs initiales.

  Dans la troisième, les coordonnées se répartissent de façon aléatoire et les profondeur sont affectée d'une erreur calculée selon la formule Box-Muller. Le lissage joue parfaitement son rôle et si les coefficients sont légèrement modifiés, la forme générale est respectée.

  Enfin, la quatrième travaille sur un petit secteur d'une carte IGN dont les courbes de niveau sont décrites par 199 pointés. Avec un polynôme du dixième degré, à l'exception de bords, l'effet du lissage se révèle insignifiant, il devient possible de relever les altitudes en tout point et de tracer des courbes de niveau supplémentaires.
  A noter la convergence des lignes de plus grande pente vers le talweg signalé par la flèche rouge.


Extraire la page pour l'enregistrer ou l'imprimer