é data la seguente funzione $f(x) = e^{1-x} \cdot (x+1)^2$
Si chiede di valutare il polinomio interpolatore con nodi equispaziati e nodi di Chebychev-Gauss_Lobatto tra -2 e 2, trovare l'errore in norma infinito, rappresentarli in scala logaritmica e valutare la coerenza con i risultati teorici per un numero di intervalli pari a 40, 80, 160 e 320.
Questa è la mia soluzione:
Testo nascosto, fai click qui per vederlo
- Codice:
f = @(x) exp(1-x).*(x+1).^2;
a = -2;
b = 2;
x_display = linspace(a, b, 1000);
err_max_equi = [];
err_max_cgl = [];
for n=[40 80 160 320]
x_equi = linspace(a, b, n+1);
p = polyfit(x_equi, f(x_equi), n);
p_display = polyval(p, x_display);
err_max_equi = [err_max_equi; max(abs(p_display - f(x_display)))];
k = 0:n;
t = -cos(pi*k/n);
x_cgl = (b-a)/2 * t + (a+b)/2;
p = polyfit(x_cgl, f(x_cgl), n);
p_display = polyval(p, x_display);
err_max_cgl = [err_max_cgl; max(abs(p_display - f(x_display)))];
end
semilogy([40 80 160 320],err_max_equi, 'bo-', [40 80 160 320], err_max_cgl, 'go-');
E i risultati sono questi:
err_max_cgl = 1.42108547152020e-14, 2.51254901790787e-05, 16809550758.7128, 4.64752461515483e+20
err_max_equi = 1.10806244579820e-06, 85792.6879294717, 3.86761001439091e+24, 5.82589183593158e+48
Ora, 2 problemi:
1) perché l'errore tende a $+ \infty$ con l'aumentare dei nodi? Non dovrebbe essere esattamente il contrario?
2) Plottando l'errore punto per punto il problema parrebbe essere il fenomeno di Runge. Ma i nodi di cgl non dovrebbero proprio evitare questo fenomeno non essendo uniformi?