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
|
X = 0:0.4:4*pi;
Y = sin(X);
S = spline(X,Y);
M = diag(3:-1:1,1);
M2 = zeros(5,5);
M2(2,1) = 1/4;
M2(3,2)= 1/3;
M2(4,3) = 1/2;
M2(5,4) = 1;
S1 = S;
S2 = S;
S1.coefs = S1.coefs*M;
S2.coefs = [zeros(size(S2.coefs,1),1) S2.coefs];
S2.coefs = S2.coefs*M2;
% ajout des constantes (ceci est faux)
S2.coefs(:,5) = pi^2/log(3212);
x = linspace(X(1),X(end),1001);
% on evalue la valeur des polynomes interpolateurs cubiques sur l'ensemble des points du domaine "serré"
A = ppval(S,x);
%on fait somme f(x)dt, proche de l'intégrale
B = cumsum(A)*(x(2)-x(1));
%tracé fonction de départ
hold all
plot(X,Y,'o-')
%tracé premiere spline
plot(x,ppval(S,x),'r')
%tracé dérivée
plot(x,ppval(S1,x),'g')
%tracé intégrale avec cumsum
plot(x,B,'y')
%tracé de l'intégrale calculée proprement de la première spline
plot(x,x.^4*S2.coefs(1,1)+x.^3*S2.coefs(1,2)+x.^2*S2.coefs(1,3)+x.^1*S2.coefs(1,4),'m')
ylim([-1.5 2.5]) |
Partager