1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
% paramètres de la fonction qu'on devra retrouver
n = 2.3
A = 100
B = 5.2
%points au pif
X = 100*rand(1,50000);
Y = A+B*X.^n;
% on trie les vecteurs
[X_sort,ordre] = sort(X);
Y_sort = Y(ordre);
% on n'a pas une belle droite...
figure(1)
loglog(X_sort,Y_sort)
%on dérive : on dit que diffY/diff x est la dérivée entre 2 point X
%consécutifs.. valable si moult points.
dX = diff(X_sort);
dY = diff(Y_sort);
Y_der = dY./dX;
X_moy = 1/2*(X_sort(1:end-1)+X_sort(2:end));
% on a une belle droite !
figure(2)
loglog(X_moy,Y_der)
% on fait un moindre carrés sur les logs : on trouve n et B
x_log = log(X_moy);
y_log = log(Y_der);
mat_MC =[x_log' ones(size(x_log,2),1)];
Res = mat_MC\y_log';
n_retrouve = Res(1)+1
B_retrouve = exp(Res(2))/n_retrouve
% on trouve A et on peut recalculer B par un deuxieme moindre carrés vu
% qu'on connait n
mat_MC2 = [X_sort'.^n_retrouve ones(size(X_sort,2),1)];
Res2 = mat_MC2\Y_sort';
B_retrouve2 = Res2(1)
A_retrouve = Res2(2) |
Partager