MATH_MoindresCarres [Analyse]
Par Marc Duc-Jacquet (Math4D v2)
Nouvelle recherche
Si (Faux)
` MATH_MoindresCarres [Marc DUC-JACQUET 20/01/2003]
` ---------------------------------------------
` ATTENTION : nécessite MATH_SyslinSurdim
` ---------------------------------------------
` Source: Bibliothèque d'Analyse Numérique de Grenoble (BANG)
` dont l'élaboration est un travail d'équipe auquel l'auteur a participé
` ---------------------------------------------
` Rappels mathématiques :
` On considère un nuage de points (Xi, Yi) i=1,2,;;; M
` Soit P un polynôme quelconque de degré inférieur ou égal à N
` avec M>=N+1
` P(x)= A0 + A1X + A2X^2 + ;;; + AN X^N
` On cherche le polynôme (c'est à dire les coefficients A0,A1,;;; AN
` qui rend minimum la quantité:
` Q = Somme ( Yi - P(Xi) )^2
` Ce problème se ramène à la résolution d'un système sur dimensionné
` de M équations à N+1 inconnues et peut donc être résolu en utilisant
` la méthode MATH_SyslinSurdim
` MATH_MoindresCarres fait aussi appel à la méthode MATH_Horner
` ---------------------------------------------
` MATHERROR:= MATH_MoindresCarres(->X;->Y; N;->A)
` le premier paramètre est un pointeur sur le tableau des abscisses Xi
` le second paramètre est un pointeur sur le tableau des ordonnées Yi
` le troisième paramètre est N (degré du polynôme)
` A est le tableau unidimensionnel des coefficients du polynôme solution
` ---------------------------------------------
` MATHERROR (valeur renvoyée par la méthode)
` 0 -> La méthode a été conduite à son terme
` +1 -> La méthode est avortée
`
Fin de si
C_ENTIER LONG(MATHERROR)
C_POINTEUR($1;$2;$4)
C_REEL($3)
C_ENTIER LONG($M;$i;$N)
C_REEL($F;$Epsilon)
$M:=Taille tableau($1->)
$N:=$3+1
TABLEAU REEL(Tab;$M;$N)
` TABLEAU REEL(tabX;$N) `solution
`COPIER TABLEAU($2->;$Y)
Boucle ($i;1;$M)
$P:=1
$F:=$1->{$i}
Tab{$i}{1}:=1
Boucle ($j;2;$N)
$P:=$P*$F
Tab{$i}{$j}:=$P
Fin de boucle
Fin de boucle
$Epsilon:=0,000001
MATHERROR:=MATH_SyslinSurdim (->Tab;$2;$4;$M;$N;$Epsilon)
$0:=MATHERROR