% % MATLAB for DUMMIES 10-11 % Exercice 4 % % function matlab4() clear all; close all; p = 2; c = 1/sqrt(2); T = [0 0 0 1 1 2 2 3 3 4 4 4]; X = [1 1 0 -1 -1 -1 0 1 1]; Y = [0 1 1 1 0 -1 -1 -1 0]; W = [1 c 1 c 1 c 1 c 1 ]; L = computeLength(T,X,Y,W,p) T = [0 0 0 1 2 3 4 5 6 7 8 8 8]; X = [1 1 0 -6 -2 -1 7 1 1 -4]; Y = [0 1 4 1 4 -2 -2 -1 8 -6]; W = [1 1 1 1 3 1 2 1 1 4]; L = computeLength(T,X,Y,W,p) nt = length(T) - 1; dt = 0.005; t = [T(p+1):dt:T(nt-p+1)]; for i=0:nt-p-1 B(i+1,:) = b(t,T,i,p); end w = W * B; x =(W .* X) * B ./ w; y =(W .* Y) * B ./ w; plot(x,y,'-r'); hold on; plot(X,Y,'.r','MarkerSize',25); axis equal axis off end function u = b(t,T,j,p) i = j+1; if p==0 u = (t>= T(i) & t < T(i+p+1)); return end u = zeros(size(t)); if T(i) ~= T(i+p) u = u + ((t-T(i)) ./ (T(i+p) -T(i))) .* b(t,T,j,p-1); end if T(i+1) ~= T(i+p+1) u = u + ((T(i+p+1)-t) ./ (T(i+p+1) -T(i+1))) .* b(t,T,j+1,p-1); end end function u = dbdt(t,T,j,p) i = j+1; u = zeros(size(t)); if T(i) ~= T(i+p) u = u + (p / (T(i+p) -T(i))) * b(t,T,j,p-1); end if T(i+1) ~= T(i+p+1) u = u - (p / (T(i+p+1) -T(i+1))) * b(t,T,j+1,p-1); end end