Fichier:Desommation gaussienne lorentzienne.svg

Le contenu de la page n’est pas pris en charge dans d’autres langues.
Un livre de Wikilivres.

Fichier d’origine(Fichier SVG, nominalement de 610 × 460 pixels, taille : 59 kio)

Description

Description
English: Non linear regression to fit the curve with the sum of a lorentzian function and a gaussian function.
Français : Régression non linéaire pour ajuster la courbe avec la somme d'une fonction lorentzienne et d'une fonction gaussienne.
Date
Source Travail personnel
Auteur Cdang

Scilab source

English: English version by default.
Français : Version française, si les préférences de votre compte sont réglées (voir Special:Preferences).


Fichier fonctions_gaussien_lorentzien.sci : fonction étudiée (bibliothèque).

// *************
// * Fonctions *
// *************

// Fonction gaussienne centrée sur 0

function [y] = gauss(A, x)
    // A(1) : hauteur de pic
    // A(2) : "largeur" du pic
    y = A(1)*exp(-x.*x/A(2));
endfunction

// Fonction lorentzienne centrée sur 0

function [y] = lorentz(A, x)
    // A(1) : hauteur de pic
    // A(2) : "largeur" du pic
    foo = A(2)*A(2);
    y = foo*A(1)./(foo + 4*x.*x);
endfunction

function [y] = profil(A, x)
    // A(1) : hauteur de pic lorentzien
    // A(2) : "largeur" du pic lorentzien
    // A(3) : hauteur de pic gaussien
    // A(4) : "largeur" du pic gaussien
    L = A(1:2);
    G = A(3:4);
    y = lorentz(L, x) + gauss(G, x);
endfunction

Fichier generateur_pic_gaussien_lorentzien.sce : crée un nuage de points et l'enregistre dans le fichier pic_gaussien_lorentzien_bruite.txt.

chdir("/monChemin/");

exec("fonctions_gaussien_lorentzien.sci");

// **************
// * Constantes *
// **************

paramlorentz(1) = 5; // hauteur de la courbe lorentzienne
paramlorentz(2) = 2; // largeur de la courbe lorentzienne
paramgauss(1) = 10; // hauteur de la courbe gaussienne
paramgauss(2) = 3; // largeur de la courbe gaussienne
var=0.5; // variance de la loi normale pour le bruit

nbpts = 100 // nombre de points
demielargeur = max(3*paramgauss(2), 3*paramlorentz(2)) // pour intervalle x
pas = 2*demielargeur/nbpts;

// ******************
// * Initialisation *
// ******************

X = zeros(nbpts,1);
Y = zeros(nbpts,1);

// ***********************
// * Programme principal *
// ***********************

// Nuage de points

i=(1:nbpts)';
X = pas*i - demielargeur;
Y = profil([paramlorentz;paramgauss], X) + var*rand(X, "normal");

// Enregistrement

csvWrite([X, Y], "pic_gaussien_lorentzien_bruite.txt")

Fichier desommation_gauss_lorentz.sce : traite les données.

// ******************
// * Initialisation *
// ******************

clf;
chdir("/monChemin/");

exec("fonctions_gaussien_lorentzien.sci");

// **************
// * Constantes *
// **************

Ainit = [1;1;1;1]; // paramètres initiaux du modèle

// *************
// * Fonctions *
// *************

// Résidus

function [e] = residus(A, x, y)
    e = profil(A, x) - y;
endfunction

// ***********************
// * Programme principal *
// ***********************

// Lecture des données

donnees = csvRead("pic_gaussien_lorentzien_bruite.txt")
X = donnees(:,1);
Y = donnees(:,2);

// Traitement des données

[S, Aopt] = leastsq(list(residus, X, Y), Ainit)
Yopt = profil(Aopt, X);
YLopt = lorentz(Aopt(1:2),X);
YGopt = gauss(Aopt(3:4),X);

// Affichage

plot(X, Yopt, "-r")
plot(X, YLopt, "-c")
plot(X, YGopt, "-g")
plot(X, Y, "+b")

hauteur = max(Y);
xmin = min(X)

xstring(xmin, hauteur*0.95,...
 "lorentzienne : Al = "+string(0.01*round(100*Aopt(1)))...
+" ; Hl = "+string(0.01*round(100*Aopt(2))))
xstring(xmin, 3*hauteur/4,...
 "gaussienne : Ag = "+string(0.01*round(100*Aopt(3)))...
+" ; Hg = "+string(0.01*round(100*Aopt(4))))
xstring(xmin, hauteur/2,...
 "variance : S = "+string(0.01*round(100*S)))

Conditions d’utilisation

Moi, en tant que détenteur des droits d’auteur sur cette œuvre, je la publie sous la licence suivante :
w:fr:Creative Commons
paternité partage à l’identique
Ce fichier est disponible selon les termes de la licence Creative Commons Attribution – Partage dans les Mêmes Conditions 3.0 (non transposée).
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 cette œuvre, vous devez distribuer votre contribution sous la même licence ou une licence compatible avec celle de l’original.

Légendes

Régression non linéaire pour ajuster la courbe avec la somme d'une fonction lorentzienne et d'une fonction gaussienne.

É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
actuel2 mai 2019 à 23:11Vignette pour la version du 2 mai 2019 à 23:11610 × 460 (59 kio)Cdanghalf variance; rounded values
8 novembre 2012 à 16:40Vignette pour la version du 8 novembre 2012 à 16:40483 × 364 (57 kio)CdangUser created page with UploadWizard

La page suivante utilise ce fichier :

Usage global du fichier

Les autres wikis suivants utilisent ce fichier :

Métadonnées