Fichier:Regression circulaire coope points gruntz.svg

Fichier d’origine(Fichier SVG, nominalement de 349 × 346 pixels, taille : 21 kio)

Ce fichier et sa description proviennent de Wikimedia Commons.

Description

Description
English: Circle fitting, using Kåsa and Coope linear method (method of the algebraic distance), with the data set proposed by D. Gruntz. Created with Scilab, modified by Inkscape.
Français : Régression circulaire par la méthode linéaire de Kåsa et Coope (méthode de la distance algébrique), en utilisant le jeu de données proposé par Gruntz. Créé avec Scilab, modifié avec Inkscape.
Date
Source Travail personnel
Coope, Ian D., Circle fitting by Linear and Nonlinear Least Squares, in "Journal of Optimization Theory and Applications", vol. 76, No. 2, pp. 381-388, february 1993
Gruntz, D., Finding the Best Fit Circle, in "The MathWorks Newsletter", Vol. 1, p. 5, 1990
Auteur Cdang (Christophe Dang Ngoc Chan)

Parameters of the circle:

  • xc = 3.06;
  • yc = 0.744;
  • r = 4.11.

Scilab source

// Initialisation

clear;

// données (D. Gruntz)

X0 = [0.7, 3.3, 5.6, 7.5, 6.4, 4.4, 0.3, -1.1];
Y0 = [4.0, 4.7, 4.0, 1.3, -1.1, -3.0, -2.5, 1.3];

// fonctions

// régression circulaire linéaire

function [C, r, R]=regression_circulaire(X, Y)
    // X, Y : points expérimentaux (vecteurs ligne)
    // C : coordonnées du centre du cercle (vecteur)
    // r : rayon du cercle (scalaire)
    A = [X ; Y];
    d = X.^2 + Y.^2;
    // xetoile = 2*xcentre
    // yetoile = 2*ycentre
    // zetoile = r^2 - (xcentre^2 + ycentre^2)
    [xyetoile, zetoile, sigma] = reglin(A, d');
    // A'\d' si l'on ne s'intéresse pas à l'écart
    C = 0.5*xyetoile;
    r = sqrt(zetoile + C(1)^2 + C(2)^2);
    R = sigma;
endfunction

// **********
// programme principal
// **********

// lecture des données

// Xdef, Ydef : vecteurs ligne
Xdef = X0;
Ydef = Y0;

// regression
[centre, rayon, ecart] = regression_circulaire(Xdef, Ydef)

// tracé

clf;
// points
plot2d(Xdef, Ydef, style = -1) //, frameflag=4)
isoview(-2, 8, -4, 6);
xstring(-1.5, 5.5, 'C('+string(centre(1))+' ; '+string(centre(2))+') ; r = '+string(rayon))
// modèle
plot(centre(1), centre(2), 'r+')
diametre = 2*rayon;
xarc(centre(1) - rayon, centre(2) + rayon,...
    diametre, diametre,...
    0, 360*64)
a = get('hdl'); // ellipse
a.foreground = 5; // couleur


print(%io(2), centre)
print(%io(2), rayon)
print(%io(2), ecart)

Conditions d’utilisation

Moi, en tant que détenteur des droits d’auteur sur cette œuvre, je la publie sous la licence suivante :
Creative Commons CC-Zero Ce fichier est disponible selon les termes de la licence Creative Commons CC0 Don universel au domaine public.
La personne qui a associé une œuvre avec cet acte l’a placée dans le domaine public en renonçant mondialement à tous ses droits sur cette œuvre en vertu des lois relatives au droit d’auteur, ainsi qu’à tous les droits juridiques connexes et voisins qu’elle possédait sur l’œuvre, sans autre limite que celles imposées par la loi. Vous pouvez copier, modifier, distribuer et utiliser cette œuvre, y compris à des fins commerciales, sans qu’il soit nécessaire d’en demander la permission.

Légendes

Ajoutez en une ligne la description de ce que représente ce fichier

Éléments décrits dans ce fichier

dépeint

Historique du fichier

Cliquer sur une date et heure pour voir le fichier tel qu'il était à ce moment-là.

Date et heureVignetteDimensionsUtilisateurCommentaire
actuel7 décembre 2012 à 16:07Vignette pour la version du 7 décembre 2012 à 16:07349 × 346 (21 kio)Cdang{{Information |Description ={{en|1=Circle fitting, using Coope linear method, with the data set proposed by D. Gruntz. Created with Scilab, modified by Inkscape.}} {{fr|1=Régression circulaire par la méthode linéaire de Coope, en utilisant le jeu...

La page suivante utilise ce fichier :

Métadonnées