Fichier:Regression quadratique lineaire donnees gander.svg
De testwiki
Aller à la navigation
Aller à la recherche
Taille de cet aperçu PNG pour ce fichier SVG : 452 × 369 pixels. Autres résolutions : 294 × 240 pixels | 588 × 480 pixels | 941 × 768 pixels | 1 254 × 1 024 pixels | 2 509 × 2 048 pixels.
Fichier d’origine (Fichier SVG, nominalement de 452 × 369 pixels, taille : 27 kio)
Ce fichier provient de Wikimedia Commons et peut être utilisé par d'autres projets. Sa description sur sa page de description est affichée ci-dessous.
Description
| DescriptionRegression quadratique lineaire donnees gander.svg |
English: Fitting the data with a quadratic function (conic section). Data points from Gander, W., Golub, Gene, H. and Strebel, R., Least-Squares Fitting of Circles and Ellipses, BIT 34 (1994), 558-578.
The result is an ellipse.
Français : Régression par une fonction quadratique (conique). Nuage de points de Gander, W., Golub, Gene, H. and Strebel, R., Least-Squares Fitting of Circles and Ellipses, BIT 34 (1994), 558-578.
Le résultat est une ellipse. |
| Date | |
| Source | Travail personnel |
| Auteur | Cdang |
Parameters of the ellipse:
- cartesian equation: x2 + 0.815xy + 0.719y2 – 14.0x – 10.1 = 0;
- geometrical parameters:
- center C(5.38, 4.00),
- semi-axes: a = 2.80, b = 5.10,
- tilt: φ = 35.5°.
Scilab source
| This media was created with Scilab, a free open-source software. Here is a listing of the Scilab source used to create this file. |
// **********
// Initialisation
// **********
clear;
// **********
// Données
// **********
X0 = [1, 2, 5, 7, 9, 6, 3, 8];
Y0 = [7, 6, 8, 7, 5, 7, 2, 4];
// **********
// Fonctions
// **********
function [a] = regression_quadratique(X, Y)
// méthode de la distance algébrique
// X, Y : points expérimentaux, matrices colonnes réelles
// a : coefficients de la formule quadratique (matrice colonne réelle)
YY = (X.*X);
XX = [(X.*Y) ; (Y.*Y) ; X ; Y];
[aa, b] = reglin(XX, YY);
a = [-aa, -b];
endfunction
function [phi]=trouve_rotation(A)
// A : coefficients de la formule quadratique (matrice colonne réelle)
// phi : angle que fait un axe de l'ellipse avec x (radians)
delta = 1 - 1/(1 + (A(3) - A(1))^2/A(2)^2);
absphi = acos(sqrt((1 + sqrt(delta))/2));
cap = cos(absphi); sap = sin(absphi);
signephi = sign(A(2)*(cap*cap - sap*sap)/(A(1) - A(3)));
phi = signephi*absphi;
endfunction
function [x,y]=trouve_centre(A)
// A : coefficients de la formule quadratique (matrice colonne réelle)
// x, y : coordonées du centre de l'ellipse (réels)
delta = A(2)*A(2) - 4*A(1)*A(3);
x = (2*A(3)*A(4) - A(2)*A(5))/delta;
y = (2*A(1)*A(5) - A(2)*A(4))/delta;
endfunction
function [rx, ry]=trouve_rayons(a, phi, xc, yc)
// a : coefficients de la formule quadratique (matrice colonne réelle)
// phi : angle que fait un axe de l'ellipse avec x
// xc, yc : coordonnées du centre de l'ellipse
// rx, ry : rayons (grand et petit demi-grands axes) de l'ellipse
A = [a(1), a(2)/2 ; a(2)/2, a(3)];
Q = rotate([1, 0 ; 0, 1], phi); // matrice de rotation
t = [xc ; yc]; // matrice de translation
Abar = Q'*A*Q;
b = [a(4) ; a(5)];
bbar = (2*t'*A + b')*Q;
c = a(6);
cbar = t'*A*t + b'*t + c;
rx = sqrt(abs(cbar/Abar(1,1)));
ry = sqrt(abs(cbar/Abar(2,2)));
endfunction
function [d]=conique(a, x, y)
d = a(1)*x'*x + a(2)*x'*y + a(3)*y'*y + a(4)*x + a(5)*y + a(6);
endfunction
function [] = trace_conique(a)
epsilon = 1.5e-1;
Xbase = 0:0.1:10;
Ybase = 1:0.1:9;
i = 1;
for x = Xbase
for y = Ybase
if abs(conique(a, x, y)) <= epsilon then
X(i) = x;
Y(i) = y;
i = i + 1;
end
end
end
Xmoy = mean(X); Ymoy = mean(Y); // détermination d'un point intérieur
theta = atan(Y-Ymoy, X-Xmoy); // angle des vecteurs
posMat = gsort([theta, X, Y], "lr"); // classement dans le sens trigo
[m, k] = max(abs(diff(posMat(:, 1)))); // saut de point
X = [posMat(k+1:$, 2) ; posMat(1:k, 2)]; // décalage circulaire
Y = [posMat(k+1:$, 3) ; posMat(1:k, 3)];
plot2d(X, Y, style = 5);
endfunction
// **********
// Programme principal
// **********
// lecture des données
Xdef = X0;
Ydef = Y0;
// Régression
Aopt = regression_quadratique(Xdef, Ydef);
aopt = [1, Aopt];
// affichage des paramètres
disp(aopt)
phi = trouve_rotation(aopt);
phideg = phi*180/%pi;
[xc, yc] = trouve_centre(aopt);
[a, b] = trouve_rayons(aopt, phi, xc, yc);
disp("phi = "+string(phi)+" rad = "+string(phideg)+"°.");
disp("C("+string(xc)+" ; "+string(yc)+").");
disp("a = "+string(a)+" ; b = "+string(b)+".");
// tracé
clf;
plot(Xdef, Ydef, "b+")
replot([0, 10 ; 1, 9]);
plot(xc, yc, "r+")
trace_conique(aopt)
Conditions d’utilisation
Moi, en tant que détenteur des droits d’auteur sur cette œuvre, je la publie sous les licences suivantes :
| Vous avez la permission de copier, distribuer et modifier ce document selon les termes de la GNU Free Documentation License version 1.2 ou toute version ultérieure publiée par la Free Software Foundation, sans sections inaltérables, sans texte de première page de couverture et sans texte de dernière page de couverture. Un exemplaire de la licence est inclus dans la section intitulée GNU Free Documentation License.http://www.gnu.org/copyleft/fdl.htmlGFDLGNU Free Documentation Licensetruetrue |
Ce fichier est sous licence Creative Commons Attribution – Partage dans les Mêmes Conditions 3.0 Non Transposé, 2.5 Générique, 2.0 Générique et 1.0 Générique.
- Vous êtes libre :
- de partager – de copier, distribuer et transmettre cette œuvre
- d’adapter – de modifier cette œuvre
- Sous les conditions suivantes :
- paternité – Vous devez donner les informations appropriées concernant l'auteur, fournir un lien vers la licence et indiquer si des modifications ont été faites. Vous pouvez faire cela par tout moyen raisonnable, mais en aucune façon suggérant que l’auteur vous soutient ou approuve l’utilisation que vous en faites.
- partage à l’identique – Si vous modifiez, transformez ou vous basez sur cet élément, vous devez distribuer votre contribution sous une license identique ou compatible à celle de l’original.
Vous pouvez choisir l’une de ces licences.
Légendes
Ajoutez en une ligne la description de ce que représente ce fichier
Éléments décrits dans ce fichier
dépeint
Valeur sans élément de Wikidata
20 décembre 2012
27 628 octet
369 pixel
452 pixel
image/svg+xml
4a7ebd425ec31ce1f4a2f8eb38a57b6d267d0a94
Historique du fichier
Cliquer sur une date et heure pour voir le fichier tel qu'il était à ce moment-là.
| Date et heure | Vignette | Dimensions | Utilisateur | Commentaire | |
|---|---|---|---|---|---|
| actuel | 24 mai 2018 à 13:29 | 452 × 369 (27 kio) | wikimediacommons>Cdang | continuous line |
Utilisation du fichier
La page suivante utilise ce fichier :
