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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| function [A] = GraphQuadNC(X,Y,k)
axis( [ min(X)-1 max(X)+1 min(Y)-1 max(Y)+1 ] );
hold on
for l=1:size(X,2)
plot(X(1,l), Y(1,l),'*');
hold on
end
hold on
%Variable pour stocker l'aire
A = 0;
%Bornes d'intégrations pour la fonction polyval
a = 0;
b = 0;
%Degré du polynôme
degree = 0;
%Le nombre de points à traiter
i_end = size(X,2);
for i=1:k:i_end
%S'il y a k+1 points disponibles :
if ( i_end-i+1 >= k+1 )
%On récupère dans un vecteur temporaire les coordonnées des k+1
%points courants.
X_temp = 0;
Y_temp = 0;
for j=1:(k+1)
X_temp(1,j) = X(1,i+j-1);
Y_temp(1,j) = Y(1,i+j-1);
end
a=i;
b=i+k;
degree = k;
%S'il y a moins de k+1 points disponibles :
else
%On récupère dans un vecteur temporaire les coordonnées des k'<k+1
%points restants.
X_temp = 0;
Y_temp = 0;
for j=1:(i_end-i+1)
X_temp(1,j) = X(1,i+j-1);
Y_temp(1,j) = Y(1,i+j-1);
end
a = i;
b = i_end;
degree = i_end-i;
end
%On calcule l'équation de la courbe.
f = polyfit(X_temp, Y_temp, degree);
%On calcule ensuite sa primitive.
F = polyint(f);
%On évalue ensuite l'aire sous la courbe entre les bornes a et b.
A = A + ( polyval(F,X(1,b)) - polyval(F,X(1,a)) );
X_Graph = [ X_temp(1,1):0.01:X_temp(1,size(X_temp,2)) ];
Y_Graph = polyval(f, X_Graph);
plot(X_Graph, Y_Graph, 'color', 'm');
hold on
end |
Partager