Nodi di Chebychev-Gauss_Lobatto e divergenza errore

Messaggioda Nickbru » 13/06/2022, 17:56

Ho un dubbio, che è quasi più teorico che pratico credo.
é 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?
Ultima modifica di feddy il 13/06/2022, 23:02, modificato 1 volta in totale.
Motivazione: Lobalto--->Lobatto
Nickbru
Junior Member
Junior Member
 
Messaggio: 73 di 145
Iscritto il: 04/07/2019, 10:36

Re: Nodi di Chebychev-Gauss_lobalto e divergenza errore

Messaggioda feddy » 13/06/2022, 22:47

Le tue perplessità sono fondate. La tua funzione è $C^\infty$... dunque per la teoria all'aumentare di $n$ usando i nodi di CGL dovresti avere un'approssimazione sempre migliore, eppure non è così. Il motivo è racchiuso nelle warning che dovresti ottenere eseguendo il codice. Andando a vedere la documentazione di polyfit, risulta che il sistema lineare usato per trovare i coefficienti ha per matrice la matrice di Vandermonde, che è notoriamente malcondizionata :-)
Avatar utente
feddy
Moderatore
Moderatore
 
Messaggio: 2924 di 5941
Iscritto il: 26/06/2016, 00:25
Località: SISSA

Re: Nodi di Chebychev-Gauss_lobalto e divergenza errore

Messaggioda feddy » 13/06/2022, 22:50

Una soluzione a questo è utilizzare un metodo appropriato, ad-hoc, nel caso in cui $n$ è grande. Credo esuli dallo scopo dell'esercizio, ma se sei interessato posso aggiungere dettagli.
Avatar utente
feddy
Moderatore
Moderatore
 
Messaggio: 2925 di 5941
Iscritto il: 26/06/2016, 00:25
Località: SISSA

Re: Nodi di Chebychev-Gauss_lobalto e divergenza errore

Messaggioda feddy » 13/06/2022, 23:02

P.S.: *Lobatto :-)
Avatar utente
feddy
Moderatore
Moderatore
 
Messaggio: 2927 di 5941
Iscritto il: 26/06/2016, 00:25
Località: SISSA

Re: Nodi di Chebychev-Gauss_lobalto e divergenza errore

Messaggioda Nickbru » 14/06/2022, 11:24

Grazie, ho capito. Quindi la "colpa" è unicamente della matrice di Vandermonde? Se sì, c'è un modo empirico per determinare quali funzioni o metodi la rendono mal condizionata?

feddy ha scritto:ma se sei interessato posso aggiungere dettagli.

Comunque sì, mi farebbe piacere. A lezione abbiamo solo parlato dei problemi del mal condizionamento ma non di eventuali soluzioni ad hoc
Nickbru
Junior Member
Junior Member
 
Messaggio: 74 di 145
Iscritto il: 04/07/2019, 10:36

Re: Nodi di Chebychev-Gauss_Lobatto e divergenza errore

Messaggioda feddy » 14/06/2022, 12:59

Le matrici di Vandermonde *sono* malcondizionate :-) La dimostrazione la puoi trovare in qualsiasi testo introduttivo, oppure tra gli appunti del corso.

Ora non ho tempo per i dettagli, ma cercando in rete ho trovato quello che serve (https://www.math.unipd.it/~alvise/CS_20 ... e_2008.pdf) da pagina 13 a pagina 15 circa.
Avatar utente
feddy
Moderatore
Moderatore
 
Messaggio: 2929 di 5941
Iscritto il: 26/06/2016, 00:25
Località: SISSA


Torna a Analisi Numerica e Ricerca Operativa

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite