%B. Vandeportaele 2017 %étude du comportement des différentes fonctions de bases pour l'interpolation close all for ncurve=1:5 figure hold on tb=[]; for u=0:0.01:1 % b0=1; % b1=(u^3 -3*u^2 +3*u +5 )/6; % b2=(-2*u^3 +3*u^2 +3*u +1 )/6; % b3=(u^3 )/6; %à partir du papier de Huixian, matrice M3 exprimée en colone %spline de degré 3 if ncurve==1 b0=(-1*u^3 +3*u^2 -3*u +1 )/6; b1=(3*u^3 -6*u^2 +0*u +4 )/6; b2=(-3*u^3 +3*u^2 +3*u +1 )/6; b3=(u^3 )/6; elseif ncurve==2 b0=(-3*u^2 +6*u -3 )/6; b1=(9*u^2 -12*u +0 )/6; b2=(-9*u^2 +6*u +3 )/6; b3=(3*u^2 )/6; elseif ncurve==3 b0=(-6*u +6 )/6; b1=(18*u -12 )/6; b2=(-18*u +6 )/6; b3=(6*u )/6; elseif ncurve==4 % b0=(0.5 * u^2 ); % b1=(-u^2 +3*u -3/2 ); % b2=(0.5*u^2-3*u +9/2 ); % b3=0; % %Kaihuai M3 entre (8) et (9) % A B C b0=0.5*(1 - 2*u + 1 * u^2 ); % 1/2 -1 1/2 b1=0.5*(1 + 2*u + -2 * u^2 ); % -1 1 1/2 b2=0.5*( u^2 ); % 1/2 0 0 b3=0; elseif ncurve==5 %dérivée du cas précédent b0=0.5*(-2 + 2*u ); b1=0.5*(2 - 4*u ); b2=0.5*(2* u ); b3=0; end tb=[tb;u,b0,b1,b2,b3,b0+b1+b2+b3]; end plot (tb(:,1),tb(:,2),'r-'); plot (tb(:,1),tb(:,3),'g-'); plot (tb(:,1),tb(:,4),'b-'); plot (tb(:,1),tb(:,5),'k-'); plot (tb(:,1),tb(:,6),'c-'); %recolle les différentes fonctions de base pour illustrer le poids d'un %Omega pour u^ évoluant de 0 à 4 plot (tb(:,1)+1*ones(size(tb(:,1))),tb(:,4),'b-'); plot (tb(:,1)+2*ones(size(tb(:,1))),tb(:,3),'g-'); plot (tb(:,1)+3*ones(size(tb(:,1))),tb(:,2),'r-'); legend('b0','b1','b2','b3','somme'); end %retrouve l'expression polynomiale par morceau des Bi à partir de %l'expression récurente figure hold on axis equal % 2*b2=u^2 => b2=1/2 . u^2 %b2 est défini entre 0 et 1 donc pas de changement for u=0:0.01:1 plot (u,(1/2)*u^2,'b+'); end for u=1:0.01:2 plot (u,(1/2)*u*(2-u),'r+'); end for u=1:0.01:2 plot (u,(1/2)*(u-1)*(3-u),'g+'); end %2*b1 obtenu par somme de r+ et g+ %2*b1= (u*(2-u))+((u-1)*(3-u)) = 2u -u^2 + 3u -u^2 -3 +u = -2u^2 +6u -3 %b1= -u^2 +3u-3/2 for u=1:0.01:2 plot (u,(1/2)*((u*(2-u))+((u-1)*(3-u))),'y+'); end %ce b1 est défini entre 1 et 2 donc il faut faire un changement de variable %u'=(u+1) %b'1= -(u+1)^2 +3(u+1)-3/2 % -u^2 -1 -2u +3u +3 -3/2 % -u^2 +u +1/2 %affiche b'1 entre 0 et 1 for u=0:0.01:1 plot (u,( -u^2 +u +1/2),'yo'); end %2*b0 %2*b0=(3-u)*(3-u)=9+u^2-6u %b0= 1/2 u^2 -3u +9/2 for u=2:0.01:3 plot (u,(1/2)*(3-u)*(3-u),'k+'); end %ce b2 est défini entre 2 et 3 donc il faut faire un changement de variable %u'=(u+2) %b'2= 1/2 (u+2)^2 -3(u+2) +9/2 % = 1/2 (u^2 + 4 + 4u) -3u-6 +9/2 % = 1/2 u^2 + 2 + 2u -3u-6 +9/2 % = 1/2 u^2 -1u +1/2 %affiche 2*b'2 entre 0 et 1 for u=0:0.01:1 plot (u,((1/2)*u^2 -u +1/2),'ko'); end