function P = DeBoorFix(T, n) % function P = DeBoorFix(T, n) % % Approximation der e-Funktion mit Hilfe des DeBoor-Fix-Quasiinterpolanten. % Eingabe: T - Knotenfolge des Splineraums % n - Ordnung des Splineraums % Rueckgabe: P - Kontrollpunkte vom Ergebnis % Autor: James Davey - james.e.davey at t-online.de %-------------------------------------------------------------------------- % Anzahl an Stuetzstellen bestimmen: m = length(T) - n; % Die Greville Abszissen bestimmen: mu = zeros(1,m); for j=1:m mu(j) = sum(T(j+1:j+n-1))/(n-1); end % Die Funkionswerte von psi und ihre Ableitungen bestimmen: Q = zeros(m, n); for j=1:m % Koeffizient des Taylorpolynoms an der Stelle mu(j) bestimmen (fliplr % erleichtert spaetere Berechnungen): T1 = T(j+1:j+n-1) - mu(j); Q(j,:) = fliplr(poly(T1)); % Koeffizienten mit entsprechende Gewichte multiplizieren, um die % Ableitungen mit richtigen Vorzeichen zu bestimmen: Q(j,:) = Q(j,:).*[1, cumprod(1:n-1)]; Q(j,:) = Q(j,:).*( (-1*ones(1,n)).^(n-1:-1:0) ); end % Q fertig stellen: Q = (1/factorial(n-1))*Q; % Die Vektoren g und P bilden: E = ones(n,1); P = zeros(1, m); for j=1:m g = exp(mu(j))*E; P(j) = Q(j, :)*g; end P = P';