File:Regression pic assymetrique.gif
来自testwiki
跳转到导航
跳转到搜索
Regression_pic_assymetrique.gif (610 × 460像素,文件大小:22 KB,MIME类型:image/gif、循环、10帧、5.0秒)
本文件来自维基共享资源并可能被其他项目使用。 其文件描述页上的描述显示在下面。
摘要
| 描述Regression pic assymetrique.gif |
English: Successive steps of Gauss-Newton regression, with variable damping factor α, to fit a dissymetrical noisy peak.
Pictures created with Scilab, animated with The Gimp.
Français : Étapes successives d'une régression de Gauss-Newton, avec facteur d'amortissement α variable, pour ajuster un pic assymétrique.
Images créées avec Scilab ; animation créée avec The Gimp. |
| 日期 | |
| 来源 | 自己的作品 |
| 作者 | Cdang (Christophe Dang Ngoc Chan) |
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. |
Le fichier de données et celui de fonctions communes sont identiques à ceux de File:Regression pic gaussien dissymetrique bruite.svg.
// **********
// Constantes et initialisation
// **********
clear;
clf;
chdir('monchemin/')
// Paramètres de Newton-Raphson
precision = 1e-7; // condition d'arrêt
itermax = 60; // idem
// Précision de la linéarisation approchée
epsilon = 1e-6;
// **********
// Fonctions
// **********
exec('fonctions_communes.sce', -1)
function [e] = res(Yexp, Ycal)
e = sqrt(sum((Yexp-Ycal).^2));
endfunction
function [A, R] = gaussnewton(f, X, Yexp, A0, imax, epsilon)
// A : jeu de paramètres optimisé par régression (vecteur)
// R : liste des facteurs de qualité de la régression
// pour chaque étape (vecteur)
// X : variable explicative (vecteur)
// Yexp : variable expliquée, valeurs mesurées (vecteur)
// A0 : paramètres d'initialisation du modèle (vecteur)
// epsilon : valeur d'arrêt (scalaire)
k = 1; // facteur d'amortissement initial, <=1,
// évite la divergence
n = size(X,'*');
e0 = sqrt(sum(Yexp.^2)); // normalisation du facteur de qualité
Ycal = f(A0, X); // modèle initial
R(1) = res(Yexp, Ycal)/e0; // facteur de qualité initial
disp('i = 1 ; k = 1 ; R = '+string(R(1))) // affichage param initiaux
i = 1;
B = A0;
subplot(2,1,1)
plot2d(X, Yexp, rect=[-3, -2, 3, 12])
plot(X, Ycal, "-r")
xstring(-2.8, -1.5, string(B))
subplot(2,1,2)
plot2d(R, rect=[1, 0, 10, 1])
xstring(1.2, 0.1, 'α = '+string(k)+' ; R = '+string(R(i)))
nom = 'picassym'+string(i)+'.gif';
xs2gif(0,nom)
drapeau = %t;
while (i < imax) & drapeau // teste la convergence globale
i = i+1;
deltay = Yexp - Ycal;
J = linearisation_approchee(f, B, X, epsilon); // matrice jacobienne
tJ = J'; // transposée
deltap0 = inv((tJ*J))*tJ*deltay;
drapeau2 = %t // pour une 1re exécution
while drapeau2 & (k>0.1) // teste la divergence sur 1 étape
deltap = k*deltap0;
Bnouveau = B + deltap';
Ycal = f(Bnouveau, X);
R(i) = res(Yexp, Ycal)/e0;
drapeau2 = (R(i) >= R(i-1)) // vrai si diverge
if drapeau2 then k = k*0.75; // atténue si diverge
else k0 = k; // pour affichage de la valeur
k = (1 + k)/2; // réduit l'atténuation si converge
end
end
B = Bnouveau;
drapeau = abs(R(i-1) - R(i)) > epsilon
clf;
subplot(2,1,1)
plot2d(X, Yexp, rect=[-3, -2, 3, 12])
plot(X, Ycal, "-r")
xstring(-2.8, -1.5, string(B))
subplot(2,1,2)
plot2d(R, rect=[1, 0, 10, 1])
xstring(1.2, 0.1, 'α = '+string(k0)+' ; R = '+string(R(i)))
nom = 'picassym'+string(i)+'.gif';
xs2gif(0,nom)
// disp('i = '+string(i)+' ; k = '+string(k0)+' ; R = '+string(R(i)))
end
A = B;
endfunction
// **********
// Programme principal
// **********
// lecture des données
donnees = read('pic_gauss_dissym_bruite.txt',-1,2);
// carcatéristiques des données
Xdef = donnees(:,1);
Ydef = donnees(:,2);
// Ainit = [-0.03, 9.7, 8*((0.84 - 0.03)/2.35)^2, 8*((0.45 + 0.03)/2.35)^2];
Ainit = [1, 1, 1, 1];
// Régression
tic();
[Aopt, Rnr] =...
gaussnewton(gauss_dissym, Xdef, Ydef,...
Ainit, itermax, precision)
t = toc();
// Courbe calculée
Yopt = gauss_dissym(Aopt, Xdef);
// Affichage
print(%io(2),Ainit)
print(%io(2),Aopt)
print(%io(2),t)
clf
subplot(2,1,1)
plot(Xdef, Ydef, "-b")
plot(Xdef, Yopt, "-r")
subplot(2,1,2)
plot(Rnr)
许可协议
我,本作品著作权人,特此采用以下许可协议发表本作品:
| 已授权您依据自由软件基金会发行的无固定段落及封面封底文字(Invariant Sections, Front-Cover Texts, and Back-Cover Texts)的GNU自由文件许可协议1.2版或任意后续版本的条款,复制、传播和/或修改本文件。该协议的副本请见“GNU Free Documentation License”。http://www.gnu.org/copyleft/fdl.htmlGFDLGNU Free Documentation Licensetruetrue |
- 您可以自由地:
- 共享 – 复制、发行并传播本作品
- 修改 – 改编作品
- 惟须遵守下列条件:
- 署名 – 您必须对作品进行署名,提供授权条款的链接,并说明是否对原始内容进行了更改。您可以用任何合理的方式来署名,但不得以任何方式表明许可人认可您或您的使用。
- 相同方式共享 – 如果您再混合、转换或者基于本作品进行创作,您必须以与原先许可协议相同或相兼容的许可协议分发您贡献的作品。
您可以选择您需要的许可协议。
说明
添加一行文字以描述该文件所表现的内容
此文件中描述的项目
描繪內容
GNU自由文档许可证1.2或更高版本 简体中文(已转写)
知识共享署名-相同方式共享1.0通用 简体中文(已转写)
知识共享署名-相同方式共享2.0通用 简体中文(已转写)
知识共享署名-相同方式共享2.5通用 简体中文(已转写)
5 12 2012
image/gif
文件历史
点击某个日期/时间查看对应时刻的文件。
| 日期/时间 | 缩略图 | 大小 | 用户 | 备注 | |
|---|---|---|---|---|---|
| 当前 | 2012年12月5日 (三) 14:13 | 610 × 460(22 KB) | wikimediacommons>Cdang | {{Information |Description ={{en|1=alpha (damping factor) value corrected}} |Source ={{own}} |Author =Cdang |Date = |Permission = |other_versions = }} |
文件用途
以下页面使用本文件:

