% スプライン補間（区間幅は任意）

xi = 2; xj = 2.5;
%xi = 2; xj = 3;
fi = 3; fj = 4;
di = 1; dj = -1;

h = xj-xi;
f = @(x)   fi*phi0((x-xi)/h) +   fj*phi1((x-xi)/h) ...
       + h*di*psi0((x-xi)/h) + h*dj*psi1((x-xi)/h);
fd = @(x) (1/h)*fi*phi0d((x-xi)/h) + (1/h)*fj*phi1d((x-xi)/h) ...
       +        di*psi0d((x-xi)/h) +       dj*psi1d((x-xi)/h);
fdd = @(x) (1/h/h)*fi*phi0dd((x-xi)/h) + (1/h/h)*fj*phi1dd((x-xi)/h) ...
       +     (1/h)*di*psi0dd((x-xi)/h) +   (1/h)*dj*psi1dd((x-xi)/h);

n = 100;
step = (xj-xi)/n;
x = [xi:step:xj]';
plot(x,f(x));
fprintf("f(x)\n");
fprintf("一時停止：何かのキーを押してください\n");
pause;

plot(x,fd(x));
fprintf("f'(x)\n");
fprintf("一時停止：何かのキーを押してください\n");
pause;

plot(x,fdd(x));
fprintf("f''(x)\n");
fprintf("一時停止：何かのキーを押してください\n");
pause;
