Una paio di cose:
1) la derivata è sbagliata: devi usare la regola del prodotto.
2) quello che mi pare ti sfugga è il significato del concetto di interpolazione. Ti do dei punti ${x_i}_i$ e ${y_i}_i$, per i quali passa una funzione che voglio ricostruire. Non so cosa fa nei punti in mezzo, ma voglio che passi per quei punti. Chiaramente può farlo in tanti modi.
Ad esempio, in questo caso, una spline cubica non è altro che una funzione polinomiale a tratti con certe proprietà. Determinarla significa semplicemente calcolare i coefficienti.
Una volta che ce l'abbiamo, ci si chiede: assumiamo che io conosca le $x$ e le $y$ di partenza, che sono quelle corrispondenti ad una certa funzione $f(x)$. Voglio vedere di quanto si "sbaglia" globalmente, cioè se la spline $s$ approssima "bene" la funzione $f$ che ne ha originato i "sample" (cioè i punti di partenza di cui parlavamo prima).
Per fare questo altro non devi fare che valutare entrambe le funzioni in un insieme di punti "test", fitti, come in questo caso, e osservarne il risultato.
3) Non ti viene chiesto di calcolare l'errore sulla spline, percio' le variabili
- Codice:
err, s
non ti servono.
Ti allego il codice con la soluzione:
- Codice:
clear all;
close all;
a=1;
b=2;
n=35;
f=@(x) (x.^5).*log(x); % f(x)
fd=@(x) 5.*(x.^4)*log(x) + x.^4 ; % f'(x)
% valuto la derivata nei punti estremi
f0=fd(a);
fn=fd(b);
x=linspace(a,b,n);
y=f(x);
% punti test, fitti, in cui andro' a valutare l'errore commesso
xx = linspace(a,b,500);
cs=spline(x,[f0 y fn],xx) %valutazione della spline vincolata nei punti test
% errore commesso approssimando f(x) con la spline.
errore = abs(f(xx)-cs);
max(abs(errore))