function coeff=coeff_spline(t,y,kind,param) n=length(t); % Berechnung des "Kerns" von A und b h1=t(2:n)-t(1:n-1); h2=t(3:end)-t(1:end-2); h1 = h1(:); h2 = h2(:); y = y(:); B=[h1,[2*h2;0],[h1(2:end);0]]; A=sparse(n,n); b=zeros(n,1); % TO DO: % Matrix A fuellen(spdiags, nur Zeile 2 bis n-1) % Vektor b fuellen (nur Zeilen 2 bis n-1) % Siehe Bem. 4.4.3 % Erweiterung von A und b fuer unterschiedliche Randbedingungen switch kind case 'nat' % TO DO: Rest von A und b fuellen case 'per' if y(1)~=y(end) error('This data is not applicable for periodic splines') end % TO DO: Rest von A und b fuellen A(1,1) = 2*(h1(1)+h1(end)); A(1,2) = h1(1); A(1,end) = h1(end); A(end,1) = h1(1); A(end,end-1) = h1(end-1); A(end,end) = 2*(h1(end-1)+h1(end)); b(1) = 6/(h1(1))*(y(2)-y(1)) - 6/h1(end)*(y(1)-y(end)); b(end) = 6/h1(end)*(y(1)-y(end)) - 6/h1(end-1)*(y(end)-y(end-1)); case 'compl' % TO DO: Rest von A und b fuellen A(1,1) = 2*h1(1); A(1,2) = h1(1); b(1) = 6/h1(1)*(y(2)-y(1)) - 6*param(1); %param(1) = f'(a) A(end,end-1) = h1(end); A(end,end) = 2*h1(end); b(end) = -6/h1(end)*(y(end)-y(end-1)) + 6*param(2); %param(2) = f'(b) otherwise error('This kind does not exist!') end full(A) b % Berechnung der y'' y2d=A\b; % Berechnung der Koeffizienten a,b,c,d % TO DO: Berechne Matrix A aus Aufgabenteil (i) coeff = zeros(4,n-1); for i = 1:n-1 coeff(1,i) = y(i); %di coeff(2,i) = (y(i+1)-y(i))/h1(i) - h1(i)/6*(y2d(i+1)+2*y2d(i)); % ci coeff(3,i) = 0.5*(y2d(i)); %bi coeff(4,i) = 1/(6*h1(i)) * (y2d(i+1)-y2d(i)); %ai end