60 lines
2.1 KiB
Mathematica
60 lines
2.1 KiB
Mathematica
|
clear;
|
|||
|
close all;
|
|||
|
taille_ecran = get(0,'ScreenSize');
|
|||
|
L = taille_ecran(3);
|
|||
|
H = taille_ecran(4);
|
|||
|
|
|||
|
% Calcul du mod<EFBFBD>le exact :
|
|||
|
beta_0 = 115;
|
|||
|
beta_d = 123;
|
|||
|
beta = [133,96,139,118];
|
|||
|
n_affichage = 200; % Utilisation de 200 points pour l'affichage
|
|||
|
pas_affichage = 1/(n_affichage-1);
|
|||
|
x = 0:pas_affichage:1;
|
|||
|
y = bezier(beta_0,beta,beta_d,x);
|
|||
|
|
|||
|
% Trac<EFBFBD> du mod<EFBFBD>le exact (trait noir) :
|
|||
|
figure('Name','Estimation ecretee des parametres','Position',[0.4*L,0.05*H,0.6*L,0.7*H]);
|
|||
|
plot(x,y,'-k','LineWidth',2);
|
|||
|
set(gca,'FontSize',20);
|
|||
|
xlabel('$x$','Interpreter','Latex','FontSize',30);
|
|||
|
ylabel('$y$','Interpreter','Latex','FontSize',30);
|
|||
|
hold on;
|
|||
|
|
|||
|
% Calcul des donn<EFBFBD>es d'apprentissage (bruit blanc sur les ordonn<EFBFBD>es) :
|
|||
|
n_app = 50;
|
|||
|
pas_app = 1/(n_app-1);
|
|||
|
x_j = 0:pas_app:1;
|
|||
|
sigma = 0.5;
|
|||
|
y_j = bezier_bruitee(beta_0,beta,beta_d,x_j,sigma);
|
|||
|
D_app = [x_j ; y_j];
|
|||
|
|
|||
|
% Trac<EFBFBD> des donn<EFBFBD>es d'apprentissage (croix bleues) :
|
|||
|
plot(x_j,y_j,'+b','MarkerSize',10,'LineWidth',3);
|
|||
|
|
|||
|
% Param<EFBFBD>tres du mod<EFBFBD>le :
|
|||
|
d = 16; % Testez plusieurs valeurs de d entre 2 et 20
|
|||
|
% lambda = 0.05; % Testez plusieurs valeurs dans l'intervalle [0,100]
|
|||
|
%
|
|||
|
% % Estimation des param<EFBFBD>tres de la courbe de B<EFBFBD>zier <EFBFBD> partir des donn<EFBFBD>es bruit<EFBFBD>es :
|
|||
|
% beta_estime = moindres_carres_ecretes(D_app,beta_0,beta_d,d,lambda);
|
|||
|
%
|
|||
|
% % Trac<EFBFBD> de la courbe de B<EFBFBD>zier estim<EFBFBD>e, de degr<EFBFBD> d (trait rouge) :
|
|||
|
% y_estime = bezier(beta_0,beta_estime,beta_d,x);
|
|||
|
% plot(x,y_estime,'-r','MarkerSize',10,'LineWidth',3);
|
|||
|
% lg = legend(' Modele exact',' Donnees d''apprentissage',...
|
|||
|
% [' Modele estime ($d=' num2str(d) '$, $\lambda=' num2str(lambda) '$)'],'Location','SouthEast');
|
|||
|
% set(lg,'Interpreter','Latex');
|
|||
|
|
|||
|
lambdas = 0:0.1:1; % Testez plusieurs valeurs dans l'intervalle [0,100]
|
|||
|
|
|||
|
for lambda=lambdas
|
|||
|
% Estimation des param<EFBFBD>tres de la courbe de B<EFBFBD>zier <EFBFBD> partir des donn<EFBFBD>es bruit<EFBFBD>es :
|
|||
|
beta_estime = moindres_carres_ecretes(D_app,beta_0,beta_d,d,lambda);
|
|||
|
|
|||
|
% Trac<EFBFBD> de la courbe de B<EFBFBD>zier estim<EFBFBD>e, de degr<EFBFBD> d (trait rouge) :
|
|||
|
y_estime = bezier(beta_0,beta_estime,beta_d,x);
|
|||
|
plot(x,y_estime, "DisplayName", num2str(lambda), 'LineWidth',2);
|
|||
|
end
|
|||
|
|
|||
|
legend('Location','SouthEast')
|