Hallo,
ich denke, ich konnte das Problem lösen. Die Bestimmung der Polynome erfolgt ja immer im Intervall [a,b[. Die zweite Schranke ist daher nicht im Intervall selbst enthalten und wird beim nächsten Polynom mit erfasst [b,c[. Im letzten Intervall fehlt folglich der letzte Grenzwert, der, da es kein weiteres Polynom gibt, nicht berücksichtigt wird. Ich habe daher die Funktion BSplinePolynom modifiziert, dass diese nun prüft, ob es sich um die letzte Intervallsschranke handelt. Der Code sieht wie folgt aus:
[code=Matlab]
function N = BSplinePolynom(i,p,T,t,p0)
if (nargin==4)
p0 = p;
end
if (p==1)
if (T(i)<=t && t<T(i+1)) || (t==T(i+1) && i+p0 == length(T))
N=1;
return;
else
N=0;
return;
end
end
N = 0;
if (T(i+p-1) - T(i) ~= 0)
N = (t-T(i)) / (T(i+p-1) - T(i)) * BSplinePolynom(i,p-1,T,t,p0);
end
if (T(i+p) - T(i+1) ~= 0)
N = N + (T(i+p)-t) / (T(i+p) - T(i+1)) * BSplinePolynom(i+1,p-1,T,t,p0);
end
return;
end [/code]
Ich hoffe, es passt nun. ;-)
Mit freundlichem Gruß
Micha