Capitolo 2 APPROSSIMAZIONI DI DATI E FUNZIONI CON MATHCAD 2 A. M. Ferrari - Appunti di LPCAC SOMMARIO 1. APPROSSIMAZIONE DI DATI E FUNZIONI ............................................................................................................ 3 1.1 Introduzione.............................................................................................................................................................. 3 1.2 I criteri di scelta ........................................................................................................................................................ 4 1.2.1 Osservazioni ...................................................................................................................................................... 5 2. LE CURVE DI REGRESSIONE.................................................................................................................................... 6 2.1 La retta di regressione............................................................................................................................................... 6 2.1.1 Calcolo dei coefficienti di regressione con il metodo dei minimi quadrati ....................................................... 6 2.2 La parabola di regressione ........................................................................................................................................ 7 2.3 Esame dei dati e dei risultati ..................................................................................................................................... 8 2.3.1 Il coefficiente di correlazione ........................................................................................................................... 8 2.3.2 Analisi degli scarti ............................................................................................................................................. 9 2.3.3 Varianza rispetto alla curva di regressione..................................................................................................... 10 3.1 Approssimazione polinomiale nel senso dei minimi quadrati ................................................................................ 11 3.2 Problemi nell’ interpolazione polinomiale globale. ................................................................................................. 12 3.3 Interpolazione mediante funzioni spline cubiche.................................................................................................... 13 4. INTERPOLAZIONE E REGRESSIONE CON MATHCAD ...................................................................................... 15 4.1 La retta di regressione............................................................................................................................................. 15 4.2 La parabola (e i polinomi) di regressione ............................................................................................................... 16 4.3 Le curve spline........................................................................................................................................................ 17 4.5 Regressioni specializzate ........................................................................................................................................ 20 4.6 Regressione non lineare generalizzata .................................................................................................................... 21 5 APPENDICE ................................................................................................................................................................. 22 5.1 Metodo di Lagrange................................................................................................................................................ 22 6 BIBLIOGRAFIA .......................................................................................................................................................... 23 2. APPROSSIMAZIONI DI DATI E FUNZIONI CON MATHCAD 3 1. APPROSSIMAZIONE DI DATI E FUNZIONI 1.1 Introduzione In molti problemi matematici e nella costruzione stessa di alcuni metodi numerici di base emerge l’ esigenza di dover approssimare un funzione g (x) , definita mediante una sua rappresentazione analitica oppure nota solo in alcuni punti {xi } con i = 0,1..N , soluzione di un problema matematico, con un' altra f (x) di forma più semplice su cui si possa facilmente operare (ad esempio derivare, integrare). Esaminiamo brevemente due diverse situazioni. Nella prima dopo aver eseguito delle misurazioni {y i } corrispondenti a valori prefissati della variabile indipendente {xi } relative ad un determinato fenomeno sottoposto al nostro esame vogliamo costruire un modello matematico f (x) che descrive sufficientemente bene il fenomeno e ci permetta quindi di fare previsioni attendibili in punti x diversi dai nodi {xi , yi }. Se la x desiderata è compresa tra il più grande ed il più piccolo valore delle xi il problema si chiama interpolazione; se la x richiesta è al di fuori del range delle xi allora si parla più propriamente di estrapolazione . Le procedure di interpolazione ed estrapolazione richiedono di modellizzare la funzione tra i punti conosciuti o oltre essi da una qualche forma funzionale plausibile. La forma funzionale deve essere sufficientemente generale in modo da approssimare ampie classi di fenomeni. Le funzioni polinomiali sono di gran lunga le più usate ma anche funzioni razionali e trigonometriche hanno un notevole campo di applicazione. Nella seconda invece supponiamo di dover operare su di una funzione g (x) nota analiticamente; per esempio vogliamo calcolare l’ integrale b g ( x)dx . Supponiamo però che a l’ espressione della g (x) sia tale da non permetterci di ottenere il valore incognito con i soli strumenti dell’ analisi matematica. Conviene allora approssimare la funzione, nell’ intervallo di interesse, con un’ altra funzione f (x) di forma più semplice su cui sia possibile operare analiticamente e dedurre il risultato incognito. L’ interpolazione è quindi connessa ma distinta dal problema di approssimazione di funzioni. Questo problema consiste nell’ approssimare una funzione complessa con una più semplice. In questo caso la funzione è nota è può essere calcolata in qualsiasi punto desiderato o utile per costruire l’ approssimazione. Nel caso dell’ interpolaz ione la forma funzionale non è nota ma è noto solo il suo valore in alcuni punti {xi } non di nostra scelta. Prima di affrontare un qualsiasi problema di approssimazione è indispensabile: 1. individuare la classe di funzione da usare per costruire le funzioni approssimanti 2. individuata la classe adottare un criterio per la scelta di una specifica funzione. Riportiamo ora alcuni esempi di possibili classi di funzioni approssimanti a) Pn polinomi di grado ≤ n : b) Π n (ω ) f (x ) = an x n + a n −1 x n −1 + ... + a0 polinomi trigonometrici di grado ≤ n A. M. Ferrari - Appunti di LPCAC 4 f ( x ) = a0 + n [(ak cos(kxω ) + bk sen(kxω ))] k =1 Si tratta di una classe naturale per fenomeni periodici di frequenza circolare ω . c) R m, n : funzioni razionali f (x ) = p( x ) q (x ) , p ( x ) ∈ Pn e q ( x ) ∈ Pm Una tale scelta permette di simulare singolarità . En d) : somme esponenziali f ( xi ) = n a k e − bk x k =1 Una tale classe è conveniente per fenomeni aventi cadenza esponenziale. e) S m : funzioni spline polinomiali di grado m, cioè polinomi a tratti di grado m, con derivate continue fino ad un certo ordine nei punti di raccordo. 1.2 I criteri di scelta Dati quindi N coppie di punti sperimentali (o nodi) {xi , yi }, consideriamo ora alcuni criteri di scelta comunemente adottati per costruire la funzione approssimante f(x) a) Concordanza esatta (interpolazione nel senso stretto): l’ approssimante è scelto in modo tale che yi = f ( xi ) i = 0,1...N 1 f(z) y { } 0 0 2 4 z,x 6 Cioè il valore della funzione f (xi ) nel punto sperimentale xi è esattamente uguale al valore sperimentale yi . N+1 è il numero di punti sperimentali. Un tale criterio di scelta è applicabile se il numero degli x i è uguale al numero dei parametri della f (x) e risulta opportuno soltanto quando ci si fida dei valori yi . L’ esempio è stato fatto usando MathCad. Per evitare confusioni con le variabili la funzione interpolante è stata chiamata f(z) e passa esattamente per i nodi {xi , yi }. 2. APPROSSIMAZIONI DI DATI E FUNZIONI CON MATHCAD b) 5 Metodo dei minimi quadrati lineare. Si cerca la funzione che renda minima la somma dei quadrati degli scarti f ( xi ) − yi tra valore della funzione e valore sperimentale. N i =0 [ f (xi ) − yi ]2 = i = 0,1...N minimo Si possono impiegare metodi classici del calcolo infinitesimale per risolvere questo problema. 10 y f ( z) { 5 } 0 0 5 x,z Un tale criterio di scelta è applicabile se il numero degli x i è maggiore o uguale al numero dei parametri della f (x) e risulta opportuno soltanto quando i valori yi non sono affidabili, ma sono per esempio il risultato di misure. L’ esempio è stato fatto usando MathCad. Per evitare confusioni con le variabili nell' esempio la retta ai minimi quadrati è stata chiamata f(z). La retta approssima i nodi {xi , yi } ma non passa esattamente per quei punti. Il numero di punti sperimentali N+1 è maggiore dell' ordine m del polinomio interpolante (m=1 per la retta). 1.2.1 Osservazioni Due importanti applicazioni di questo studio di dati sperimentali sono: l’ analisi delle tendenze e la verifica delle ipotesi . Nell’ analisi delle tendenze l’ andamento dei dati è utilizzato per fare delle previsioni. Se i dati sono misurati con grande precisione si usa l’ interpolazione, se al contrario la precisione dei dati è scarsa si usa il metodo dei minimi quadrati. Quindi l’ analisi delle tendenze si propone di valutare i valori della variabile dipendente o in punti interni all’ intervallo dei dati o oltre i limiti dei dati disponibili; in questo secondo caso si parla di estrapolazione. Una seconda applicazione dell’ approssimazione di dati sperimentali mediante funzioni approssimanti è la verifica delle ipotesi. I dati infatti sono confrontati con un dato modello matematico, i cui parametri devono essere determinati in modo tale che il modello soddisfi il più possibile i dati sperimentali, secondo un certo criterio prefissato. A. M. Ferrari - Appunti di LPCAC 6 2. LE CURVE DI REGRESSIONE 2.1 La retta di regressione Data una distribuzione di valori sperimentali {xi , yi ; i = 0,1,...N } . La forma più semplice di relazione tra due variabili, ed una delle più frequenti, è quella lineare, in cui la variabile dipendente è espressa in funzione della variabile indipendente x da una equazione del tipo: f ( x) = a + b ⋅ x (1) Sia che l' esistenza di una relazione lineare tra le due variabili si ammetta nota a priori, sia che venga solo ipotizzata, è conveniente calcolare i termini costanti a e b in base a dati sperimentali in modo da poter stimare anche la precisione con cui vengono determinati, per quanto concerne la varianza di campionamento. Questi calcoli vengono eseguiti con il procedimento della regressione lineare che fornisce i due termini cercati utilizzando come dati in ingresso almeno tre coppie di valori delle due variabili. La retta individuata dalla relazione 1 non passerà di regola per i punti sperimentali, definiti sul piano cartesiano dalle coppie di valori x, y usate per calcolare a e b; vi saranno cioè degli scarti tra il valore sperimentale yi associato ad un dato valore della variabile indipendente xi e il corrispondente valore calcolato f(xi) utilizzando la 1. In campo sperimentale questi scarti possono essere dovuti sostanzialmente a due tipi di cause, a carattere casuale o sistematico. Anche quando la relazione tra x e y è intrinsecamente lineare, gli effetti di errori casuali prodotti dall' influenza di altre variabili non controllate, fanno sì che ad un determinato valore di x possano in realtà corrispondere valori diversi della y a seconda delle circostanze; cioè anche quando la variabile indipendente è soggetta ad errori trascurabili, la variabile dipendente sarà soggetta a fluttuazioni. Dal punto di vista pratico il problema della regressione lineare si può porre sostanzialmente nei seguenti termini: ♦ Data una serie di coppie di valori x,y calcolare in base a questi i termini costanti a e b, in modo da minimizzare una data funzione degli scarti tra valori sperimentali e valori calcolati della variabile dipendente e valutare l' entità presumibile di questi scarti in altri casi; ♦ Valutare l' attendibilità dell' ipotesi della relazione lineare tra x e y nel senso di determinare se gli scarti tra valori sperimentali e calcolati della variabile dipendente hanno un carattere sostanzialmente casuale o risultano sistematici tanto da suggerire l' esistenza di termini non lineari nella relazione tra x e y 2.1.1 Calcolo dei coefficienti di regressione con il metodo dei minimi quadrati Risolvendo tale sistema si ricava il polinomio di primo grado ai minimi Dati gli N+1 punti sperimentali {xi , yi } determiniamo i coefficienti a 0 e a1 della retta f ( x ) = a0 + a1 x che minimizzino la quantità R(a0 , a1 ) somma dei quadrati degli scarti tra valori sperimentali e calcolati della variabile dipendente R(a0 , a1 ) = oppure N i =0 2 [ yi − (a0 + a1 ⋅ x )] (2) 2. APPROSSIMAZIONI DI DATI E FUNZIONI CON MATHCAD R(a0 , a1 ) = 7 2 N [ yi − f (xi )] i =0 (3) Cerchiamo i valori dei coefficienti a 0 e a1 che rendano minima la somma dei quadrati degli scarti cioè la funzione R(a0 , a1 ) . La condizione di minimo richiede la nullità delle derivate prime. In un punto che minimizzi R(a 0 , a1 ) le derivate parziali ∂R / ∂a 0 e ∂R / ∂a1 sono entrambe 0. Annullando tali derivate parziali otteniamo il seguente sistema lineare di due equazioni nelle due incognite a 0 e a1 : (N + 1)a0 + N i =0 xi a0 + N i =0 N xa = i =0 N xi a1 = 2 i 1 i =0 N i =0 yi (4) xi yi . 12 {xi , yi } 10 yi y y i − f ( xi ) f ( xi 8) Figura 1 f ( x) 6 4 2 0 1 2 xi 3 4 5 x Il sistema che si ottiene è quadrato in due equazioni e due incognite, quindi facilmente risolvibile. 2.2 La parabola di regressione Dati gli N+1 punti {xi , yi } determiniamo i coefficienti a 0 , a1 e a 2 della parabola f ( x) = a0 + a1 x + a 2 x 2 che minimizzi R(a0 , a1 , a2 ) = N i =0 [y − (a i 2 0 + a1 xi + a2 xi ) ] 2 Annullando le derivate parziali ∂R / ∂a 0 , ∂R / ∂a1 e∂R / ∂a 2 si ottiene un sistema di tre equazioni nelle tre incognite a 0 , a1 e a 2 . Risolvendo tale sistema si ottiene il polinomio di secondo grado ai minimi quadrati. (5) 4 y f ( z) 2 0 2 4 0 5 x, z A. M. Ferrari - Appunti di LPCAC 8 2.3 Esame dei dati e dei risultati 2.3.1 Il coefficiente di correlazione Quando tra le due variabili vi è (o non vi è) una relazione di tipo lineare è utile disporre di un parametro che permetta di valutare l’ entità di tale associazione. Il parametro utilizzato è il coefficiente di correlazione indicato con r. Il fatto stesso che il coefficiente di correlazione venga utilizzato per smentire l’ ipotesi nulla, che non ci sia cioè alcuna correlazione tra le due variabili, basta ad indicare l’ inutilità di ricorrere a questo parametro quando è data per ammessa a priori l’ esistenza di una ben definita interdipendenza tra le due variabili o addirittura sussiste tra loro un rapporto di causa ad effetto. Ricordiamo che: n (xi − x) ⋅ n (yi − y ) Cov( x, y ) = i =1 n (xi − x ) σ x = i =1 n −1 r= Cov( x, y ) σ xσ y i =1 (6) n −1 2 n (7) ( yi − y ) σ y = i =1 n −1 2 (8) (9) risulta anche σ r =b x σy (10) Il campo di variabilità di r è compreso tra –1 e 1; i due estremi corrispondono ad una correlazione perfetta in cui ogni variazione di una delle variabili è accompagnata da una di proporzionale entità dall’ altra. Se r risulta prossimo allo zero si deduce che le due variabili non sono legate da una relazione di tipo lineare. Questo non significa affatto però che le due variabili non siano strettamente collegate e dipendano in maniera funzionale l’ una dall’ altra. Uno sguardo all’ equazione 10 basta per confermare che per qualsiasi relazione tra la x e la y che dia luogo a b=0 risulta identicamente r=0; è sufficiente che nel piano cartesiano la relazione y=f(x) dia origine ad una curva simmetrica (ad esempio cerchio, iperbole, parabola) perché tale condizione sia soddisfatta. Si deve quindi tener presente che un basso valore del coefficiente di correlazione non implica automaticamente l’ assenza di associazione tra le due variabili; in alternativa vi è la possibilità che esista una correlazione, magari assai marcata, ma sostanzialmente non esprimibile mediante una relazione lineare. 2. APPROSSIMAZIONI DI DATI E FUNZIONI CON MATHCAD 9 2.3.2 Analisi degli scarti Consideriamo i valori sperimentali riportati in Tabella 1. La retta di regressione ha come equazione f ( z ) = 2.190 + 1.694 ⋅ z . I punti sperimentali e l’ equazione della retta sono riportati in figura 1. Gli scarti sono riportati in Tabella 1 e figura 2 Tabella 1 x y 1.00 2.70 1.50 5.80 1.75 3.60 2.26 7.06 2.64 9.17 3.14 7.32 3.60 7.88 3.90 7.37 4.23 8.33 4.52 11.02 20 scarti -1.184 1.069 -1.555 1.041 2.508 -0.189 -0.409 -1.421 -1.026 1.173 f ( z) y 0 0 5 figura 2 z,x 4 2 scarti 0 2 0 2 4 6 x E’ importante analizzare gli scarti tra valori sperimentali e valori calcolati. In questo caso la figura 2 non fornisce motivi per mettere in questione la validità dell’ ipotesi si relazione lineare. Consideriamo ora un nuovo esempio. I dati sperimentali sono raccolti in Tabella 2 La retta di regressione ha come equazione f ( x ) = −4.556 + 18 ⋅ x . I punti sperimentali, e la retta di regressione sono riportati in figura 3 e Tabella 2. 200 Tabella 2 x y 1 16 2 32 3 49 4 66 5 83 6 102 7 121 8 140 9 160 f ( z) scarti 2.56 0.56 -0.44 -1.44 -2.44 -1.44 -0.44 0.56 0.26 100 y 0 0 5 z,x 10 figura 3 4 2 scarti 0 2 4 0 5 x 10 A. M. Ferrari - Appunti di LPCAC 10 In questo caso gli scarti hanno un andamento sistematico tali da suggerire ulteriori analisi. Il calcolo dei coefficienti di una retta di regressione permette di utilizzare la relazione lineare ottenuta per la stima dei valori di y associati a valori di x, senza però individuare esplicitamente quanto sia in realtà lecita l’ assunzione dell’ ipotesi di relazione lineare tra le due variabili. Nel caso della relazione funzionale discussa in questi esempi se le due variabili fossero veramente legate da una legge lineare, le differenze y − f (x) dovrebbero non solo essere in media uguale a zero ma anche avere segni positivi e negativi secondo una sequenza casuale quando vengono considerati valori crescenti della x. Questa considerazione suggerisce il più semplice metodo di controllo quello cioè di riportare in grafico i residui yi − f ( xi ) . La figura 3 ricavata dalla Tabella 2 ne indica l’ andamento. E’ chiara la presenza di effetti sistematici; y risulta maggiore di f(x) ai due estremi del campo di variazione e minore nella zona centrale in modo da suggerire una effettiva curvatura della linea che rappresenta la relazione tra x e y nel piano cartesiano. Quando l’ ipotesi di linearità si dimostra valida solo in prima approssimazione in quanto essa non risulta sufficiente a spiegare tutti gli effetti sistematici presenti si può ricorrere ad un modello più complicato –ad esempio alla rappresentazione mediante un polinomio di ordine superiore al primo- ad una trasformazione di variabili che diano luogo ad una relazione lineare tra le variabili trasformate. In ogni caso il problema di determinare se una data ipotesi che dà luogo ad un modello matematico è adeguata a rappresentare una data serie di valori sperimentali non può essere risolto se non viene formulato un altro modello da contrapporre in alternativa. Va da sé che il modello più adatto può esser formulato solo da chi conosce a fondo sotto ogni aspetto tecnico il problema in corso di studio. 2.3.3 Varianza rispetto alla curva di regressione La varianza σ 2 (chiamato anche scarto quadratico medio) e la deviazione standard σ calcolate rispetto alla retta di regressione costituiscono una misura degli scarti tra gli n valori sperimentali e i corrispondenti calcolati utilizzando l' equazione della retta in corrispondenza degli stessi valori della variabile dipendente. L’ analisi della varianza è utile quando si disponga di due modelli diversi in alternativa. σ= n i =1 scartii n− p 2 σ2 = n i =1 scartii n− p 2 (11) p è il numero dei parametri necessari per definire la curva di regressione. Infatti, p=2 per la retta, p=3 per la parabola, e così via. 2. APPROSSIMAZIONI DI DATI E FUNZIONI CON MATHCAD 11 3. INTERPOLAZIONE POLINOMIALE Consideriamo il seguente problema. Siano assegnati i seguenti N+1 dati sperimentali {xi , yi ; i = 0,1,...N }, dove yi indica il valore misurato corrispondente all’ ascissa x i . Costruire un polinomio algebrico f ( x ) = a n x n + a n−1 x n−1 + ... + a 0 in modo che sia soddisfatta la condizione di interpolazione in senso stretto, tale cioè che: f ( xi ) = yi i = 0 , 1 , .... , N . , Imponendo le condizioni di interpolazione , si ottiene un sistema di equazioni lineari : n n−1 n n−1 an x0 + an−1 x0 an x1 + an−1 x1 + ... + a1 x0 + a0 = y0 + ... + a1 x1 + a0 = y1 ..... n an xi + an−1 xi n−1 i = 0,1...., N (12) + ... + a1 xi + a0 = yi Si ottiene quindi un sistema si N+1 equazioni in N+1 incognite che sono gli N+1 coefficienti a0 , a1 , a2 ...an del polinomio interpolante. Il sistema ha un' unica soluzione se il determinante della matrice dei coefficienti è diverso da zero. 1 x0 x02 ..... x0n 1 x1 x12 ..... x1n . . . . 1 xn . . . . xn2 ..... xnn Dall’ algebra sappiamo che una matrice di questo tipo è di forma speciale (si chiamano matrici di Vandermonde) ed il suo determinate è sempre diverso da zero. Esiste quindi un polinomio unico di grado n (o ordine m=N+1) che assume valori dati in N+1 punti distinti. La funzione f ( x ) con tali caratteristiche è chiamata polinomio di interpolazione di grado n e nel seguito sarà denotata con Pn ( x ) . Dal momento che i sistemi con matrici di Vandermonde sono mal condizionati, la costruzione del polinomio di interpolazione non è realizzata risolvendo il sistema sopra analizzato. 3.1 Approssimazione polinomiale nel senso dei minimi quadrati Siano assegnati i seguenti dati sperimentali {xi , yi ; i = 0,1,...N }, dove yi indica il valore misurato corrispondente all’ ascissa x i . Supponiamo che tutte le ascisse siano distinte tra di loro. Vogliamo trovare una funzione Pn (x ) cioè un polinomio di grado n : A. M. Ferrari - Appunti di LPCAC 12 Pn ( x ) = a n x n + a n−1 x n−1 + ... + a 0 (13) tale che sia minima la quantità R= N i =0 2 [ yi − Pn ( xi )] (14) Si può dimostrare che il problema ha un’ unica soluzione. Nel caso n=1 la funzione P1 ( x) è un polinomio di grado 1, che dà luogo alla cosiddetta retta di regressione lineare. Nel caso n=2 si otterrà un polinomio di grado 2, rappresentato dalla parabola ai minimi quadrati. Sottolineiamo il fatto che nel caso n=N+1 (numero punti N+1 corrisponde all’ ordine m del polinomio) l’ approssimazione polinomiale nel senso dei minimi quadrati degenera nel polinomio di interpolazione per i punti dati, mentre nel caso n>N+1 il problema non ha soluzione unica (ne ha infinite). 3.2 Problemi nell’interpolazione polinomiale globale. Il numero di punti usato nell’ interpolazione si chiama ordine dell’ interpolazione. Aumentare l’ ordine non necessariamente aumenta l’ accuratezza. Se i punti aggiunti sono lontani dalla zona di interesse il polinomio interpolante tende ad avere forti oscillazioni. Le oscillazioni non hanno in genere alcuna relazione con la forma della funzione vera. Naturalmente aggiungere punti nella zona di interesse di solito aiuta la qualità dell’ interpolazione ma non sempre. Un tipico controesempio è quello dovuto a Runge che rende palese questo fatto nel caso che l’ interpolazione venga fatta per 1 nodi equidistanziati. Consideriamo la funzione: f ( x) = , nell’ intervallo − 5 < x < 5 . 1+ x 2 Dividiamo l’ intervallo in un numero di nodi 6, 8 e 10. Costruiamo i polinomi di interpolazione di grado 6, (P6(x)); 8 (P8(x)) e 10 (P10(x)). Notiamo il forte andamento oscillante anche nell’ intervallo 2 2 1.5 f ( x) 1 P 6( x) P 8( x) P 10( x) 0.5 0 − 0.5 0.5 4 −5 2 0 x 2 4 5 2. APPROSSIMAZIONI DI DATI E FUNZIONI CON MATHCAD 13 in cui sono definiti i nodi che aumenta all’ aumentare dell’ ordine dell’ interpolazione (ordine del polinomio interpolante). Quindi che nelle applicazioni può essere opportuno non usare l’ interpolazione polinomiale globale, ma la tecnica di interpolazione composta, che consiste nell’ interpolare i dati con un polinomio a tratti di basso grado, evitando così le forti oscillazioni che presenta il polinomio di interpolazione globale. L’ esempio più semplice di applicazione di tale tecnica è l’ interpolazione lineare a tratti, che consiste nel costruire una funzione, che interpoli i punti dati e che su ogni intervallo [xi , xi +1 ] coincida con un polinomio di grado uno. La curva che rappresenta tale funzione risulta ovviamente la spezzata che unisce i punti dati. 3.3 Interpolazione mediante funzioni spline cubiche Abbiamo già osservato che, poiché i polinomi interpolanti di grado elevato hanno un comportamento oscillante, per evitare tale problema si possono utilizzare funzioni polinomiali a tratti. Tuttavia tali polinomi presentano delle discontinuità nelle derivate nei punti di raccordo. Al fine di costruire funzioni interpolanti regolari si introducono le funzioni spline. Dati i punti x i , i = 0,1,..., n in un dato intervallo [a, b] tali che: a ≡ x 0 < x1 < ... < x n −1 < x n ≡ b . (15) Sia s( x ) una funzione che su ogni intervallo [xi −1 , xi ] , i = 1,..., n , coincida con un polinomio di un dato grado k, che nei nodi x i assuma certi valori prefissati yi e tale che non solo sia continua ma abbia anche tutte le derivate continue fino all' ordine k-1 incluso in tutto l’ intervallo [a, b] . Una tale funzione si dirà funzione spline di grado k. Usare un polinomio lineare a tratti (il grado k del polinomio è 1) è la soluzione più semplice (anche se non la più soddisfacente); vuol dire approssimare la funzione in ogni intervallo [xi −1 , xi ] con una funzione lineare S1(x) (un tratto di retta) passante per i punti xi −1 , xi definita unicamente nell’ intervallo [xi −1 , xi ] (per due punti passa una sola retta). Le funzioni più popolari sono certamente quelle cubiche. La loro costruzione è assai semplice. In particolare diremo spline interpolante cubica associata alla partizione (20) una funzione [xi −1 , xi ] ; S 3 ( x) = a + b ⋅ x + c ⋅ x 2 + d ⋅ x 3 definita in ciascuno degli n intervalli S3( k ) = d k S 3 ( x) dx k la funzione è una funzione continua nell’ intervallo [a, b] per k=0,1,2. La costruzione di tale funzione richiede la determinazione di 4n parametri (4 per ciascuna cubica per gli n intervalli). Occorre definire quindi 4n condizioni. 1. S3 ( xi ) = yi i=0,1...n E’ la condizione di interpolazione: ci sono n+1 equazioni una per ciascun nodo 2. S 3 ( xi+ ) = S 3 ( xi− ) n-1 equazioni 3. S 3 (1) ( xi+ ) = S 3 (1) ( xi− ) n-1 equazioni A. M. Ferrari - Appunti di LPCAC 14 4. S 3 ( 2) ( xi+ ) = S 3 ( 2) ( xi− ) n-1 equazioni Per ogni nodo xi indichiamo S 3 ( xi+ ) ( S3 ( xi− ) ) il limite sinistro (destro) di S3(x) per x→xi Complessivamente le condizioni 1, 2, 3 e 4 consentono di scrivere 4n-2 equazioni. Ne mancano due. A seconda delle scelte di tali due ulteriori condizioni si otterranno diversi tipi di splines cubiche interpolanti , quali ad esempio : i) splines naturali se si impone S 3 ( 2) ( x 0+ ) = S 3 ( 2) ( x n− ) = 0 ii) splines periodiche se S 3 ( 2) ( x 0+ ) = S 3 ( 2) ( x n− ) ; S 3 ( 2) ( x 0+ ) = S 3 ( 2) ( x n− ) Vediamo la funzione di Runge approssimata ora da una funzione Spline cubica 1.2 1 f ( x) spline ( x) 0.037 0.5 0 4 −5 2 0 x 2 4 5 2. APPROSSIMAZIONI DI DATI E FUNZIONI CON MATHCAD 15 4. INTERPOLAZIONE E REGRESSIONE CON MATHCAD 4.1 La retta di regressione Le funzioni MathCad che consentono di calcolare la retta di regressione sono slope ed intercept (oppure la funzione line). Di seguito è riportata la sintassi di queste funzioni insieme ad esempi di utilizzo. intercept intercept(vx,vy) Sintassi Descrizione Argomenti vx, vy Fornisce l’ intercetta b della retta di regressione ai minimi quadrati: f(x)=b+m⋅x vettori reali della stessa dimensione che contengano le coppie di valori sperimentali per la variabile indipendente vx e per la variabile dipendente vy slope slope(vx,vy) Sintassi Descrizione Fornisce il coefficiente angolare m della retta di regressione ai minimi quadrati: f(x)=b+m⋅x Argomenti vx, vy vettori reali della stessa dimensione che contengano le coppie di valori sperimentali per la variabile indipendente vx e per la variabile dipendente vy line line(vx,vy) Sintassi Descrizione Fornisce un vettore i cui elementi contengono l’ intercetta ed il coefficiente angolare m della retta di regressione ai minimi quadrati: f(x)=b+m⋅x Argomenti vx, vy vettori reali della stessa dimensione che contengano le coppie di valori sperimentali per la variabile indipendente vx e per la variabile dipendente vy 1 1.1 1 1.05 1 1.12 1 1.07 1 2 vx := 2 vy := a1 := slope ( vx, vy ) 3.05 4 3.7 5 4 5 4.8 5 5.2 Interessante l’ uso della funzione line line( vx, vy ) = 8.64286 −1.60714 a0 = 0.42318 a1 = 0.84603 f ( x) := a1⋅ x + a0 2.1 3 a0 := intercept ( vx, vy ) 4 vy f ( x) 2 0 2 4 vx , x 6 A. M. Ferrari - Appunti di LPCAC 16 4.2 La parabola (e i polinomi) di regressione La funzione MathCad che consente di calcolare il polinomio di regressione di grado n è regress. La funzione fornisce un vettore che può essere utilizzato come input della funzione interp che consente di valutare il polinomio di interpolazione. Di seguito è riportata la sintassi di queste funzioni insieme ad esempi di utilizzo. −3 3 y := 1 x := 1 3 2 f ( xx) := interp ( coef2 , x, y , xx) 0 f ( xx) := 0.178462xx ⋅ − 0.192405xx ⋅ + 0.850519 2 4 coef2 := regress ( x, y , 2) 3 y f ( xx) y 2 f ( xx) 2 3 coef2 = 2 0 x , xx 0.850519 5 0 x , xx −0.192495 0.178462 regress Sintassi regress(vx,vy,n) Descrizione Fornisce un vettore con i coefficienti del polinomio che approssima i dati contenuti in vx e vy. Il vettore può essere fornito come input alla funzione interp che costruisce tale polinomio Argomenti vx, vy vettori reali della stessa dimensione che contengano le coppie di valori sperimentali per la variabile indipendente vx e per la variabile dipendente vy n n numero intero n>0 Commenti La funzione di regressione regress è utile per approssimare i dati di una misura sperimentale con un polinomio di grado n. Per n=1 si ha una regressione lineare, per n=2 parabolica, n=3 cubica ecc…Si usa regress quando si vuole usare un solo polinomio per approssimare tutti i dati sperimentali. In pratica raramente si va oltre n=6. Le prime tre componenti del vettore di output vr= regress(vx,vy,n) sono vr0 =3 specifica alla funzione interp che i dati provengono da regress, vr1 =3 è l’ indice del vettore da cui cominciano i coefficienti del polinomio, vr2 =n l’ ordine del polinomio. I successivi n+1 elementi contengono i coefficienti del polinomio dal termine di minor grado al termine di grado più elevato 5 2. APPROSSIMAZIONI DI DATI E FUNZIONI CON MATHCAD 17 4.3 Le curve spline Il polinomio interpolante lineare a tratti viene costruito con la funzione linterp. I polinomi interpolanti a tratti cubici (le curve spine cubiche) vengono costruite con la funzione cspline. Questa funzione fornisce fornisce un vettore che può essere utilizzato come input della funzione interp che consente di valutare il polinomio di interpolazione. Di seguito è riportata la sintassi di queste funzioni insieme ad esempi di utilizzo. coef := cspline ( vx, vy ) 1 f ( x) := interp ( coef , vx, vy , x) 1 1 linterp vy vy linterp( vx , vy , x) 0 0.5 f ( x) 0 0 −1 0 5 vx , x 0.5 6 0 5 vx , x linterp Sintassi linterp(vx,vy,x ) Descrizione Interpola i valori contenuti in x usando una funzione lineare. Argomenti vx, vy Commenti vettori reali della stessa dimensione che contengano le coppie di valori sperimentali per la variabile indipendente vx e per la variabile dipendente vy. Gli elementi in vx dovrebbero essere in ordine crescente. L’ interpolazione consiste nell’ usare i punti sperimentali o comunque disponibili per predire valori compresi tra questi punti. MathCad consente di connettere questi punti con delle linee rette (interpolazione lineare). A differenza delle funzioni di regressione, queste funzioni interpolanti forniscono una curva che passa per i punti sperimentali. Pertanto la funzione risultante è molto sensibile a dati spuri. Se i dati sperimentali presentano molto rumore dovrebbe essere meglio utilizzare un polinomio di regressione. Per trovare il valore di interpolazione per una particolare x, linterp trova i due punti tra cui x è compreso e fornisce il valore corrispondente di y usando l’ equazione della linea retta che congiunge i due punti. Per valori di x più piccoli del più piccolo valore in vx, MathCad estrapola il polinomio cubico nell’ intervallo descritto dai più piccoli valori in vx. Per valori di x più grandi del più grande valore in vx, MathCad estrapola il polinomio cubico nell’ intervallo descritto dai più grandi valori in vx. Per avere risultati sensati non usare interp con valori x lontani dai punti sperimentali. Infatti le funzioni linterp sono intese per interpolazione di dati ma non per estrapolazione. A. M. Ferrari - Appunti di LPCAC 18 cspline Sintassi cspline(vx,vy) Descrizione Fornisce un vettore dei coefficienti di una spline cubica. Il vettore può essere fornito come input alla funzione interp che costruisce tale funzione. Argomenti vx, vy vettori reali della stessa dimensione che contengano le coppie di valori sperimentali per la variabile indipendente vx e per la variabile dipendente vy interp Sintassi interp(vs,vx,vy,x ) Descrizione Interpola i valori contenuti in x usando la funzione i cui coefficienti sono contenuti in vs. vx e vy sono i vettori dei punti sperimentali sui quali si è costuita la funzione approssimante. Argomenti vs vettore fornito come output dalle funzioni cspline o regress vx, vy vettori reali della stessa dimensione che contengano le coppie di valori sperimentali per la variabile indipendente vx e per la variabile dipendente vy Commenti Consideriamo prima il caso in cui interp è usata con l’ output della funzione cspline. Per trovare il valore interpolato in corrispondenza di un particolare valore x, MathCad trova i due punti tra i quali è compreso il valore x. Quindi MathCad fornisce il valore f(x) usando il polinomio cubico compreso tra i due punti. Per valori di x più piccoli del più piccolo valore in vx, MathCad estrapola il polinomio cubico nell’ intervallo descritto dai più piccoli valori in vx. Per valori di x più grandi del più grande valore in vx, MathCad estrapola il polinomio cubico nell’ intervallo descritto dai più grandi valori in vx. Per avere risultati sensati non usare interp con valori x lontani dai punti sperimentali. Infatti le curve Spline sono intese per interpolazione di dati ma non per estrapolazione. Nel caso si sia usata invece la funzione regress, interp calcola i valori f(x) usando il polinomio di regressione 2. APPROSSIMAZIONI DI DATI E FUNZIONI CON MATHCAD 19 4.4 Regressione lineare generalizzata. Non tutti i dati possono essere modellizzati da rette o polinomi. Ci sono casi in cui c' è la necessità di modellizzare i dati con una combinazione lineare di funzioni arbitrarie. La funzione di MathCad linfit è costruita per risolvere questi problemi. Se si pensa che i dati in esame possano essere approssimati da una funzione F(x) combinazione lineare di alcune funzioni scelte arbitrariamente esempio F( x) = a0 ⋅ f 0 ( x) + a1 ⋅ f1( x) + ... + an ⋅ f n ( x) si usa linfit per determinare i coefficienti ai. L' riportato sopra mostra una funzione F(x) combinazione lineare di tre funzioni x, x2 e (x-1)-1. 1 . La funzione linfit utilizza una tecnica ai minimi quadrati per x +1 determinare i coefficienti a1, a2 e a3 necessari per definire la funzione F(x). F ( x) = a1 ⋅ x 2 + a2 ⋅ x + a3 ⋅ vx := 0 .43 .2 .22 .4 vy := .6 2 x .8 F( x) := .2 .8 1 1 2 x+ 1 2 2.914 S = −1.295 S := linfit( vx, vy , F) 0.501 funzione approssimante 2 x 1 vy f ( x) 1 0 f ( x) := 3.087⋅ x − 1.475⋅ x + 0.515⋅ 1 x+ 1 0 0.5 1 vx , x linfit Sintassi linfit(vx,vy,F) Descrizione Fornisce un vettore con i coefficienti usati per creare una combinazione lineare di funzioni come specificato in F che meglio approssima i dati specificati in vx e vy. Fornisce come risultato un vettore che contiene i coefficienti per costruire la funzione F Argomenti vx, vy vettori reali della stessa dimensione che contengano le coppie di valori sperimentali in ordine crescente per la variabile indipendente vx e per la variabile dipendente vy F Funzione di una singola variabile costituita da un vettore contenenti singole funzioni Commenti La funzione di MathCad linfit è basata sulla tecnica dei minimi quadrati lineari. Fornisce un vettore di coefficienti per costruire la combinazione lineare con cui ciascuna funzione specificata nel vettore F, contribuisce alla definizione della funzione F complessiva. Ci sono situazioni in cui neanche linfit è sufficiente. Infatti i dati potrebbero non essere modellizzati da una combinazione lineare di funzioni. Ad esempio se i dati possono essere modellizzati dalla funzione F ( x) = a1 ⋅ sin(2 ⋅ x) + a2 ⋅ tanh(3 ⋅ x) è sufficiente calcolare i pesi a1 e a2 usando linfit. Se invece è richiesta una funzione del tipo F ( x ) = a1 ⋅ sin( b1 ⋅ x ) + a 2 ⋅ tanh( b2 ⋅ x ) occorre determinare anche i parametri b1 e b2 ed è necessario l' utilizzo di altre funzioni specializzate di MathCad come expfit, logfit, ecc.. o la procedura generale mediante l' uso della funzione minerr A. M. Ferrari - Appunti di LPCAC 20 che si basano su tecniche ai minimi quadrati non lineari. La soluzione di equazioni non lineari è trattata nel capitolo 7. Alcune funzioni caratteristiche che si possono utilizzare con la funzione linfit sono: 1. Somme di potenze di x (polinomi di grado n in cui possono o no mancare uno o più termini). Ad esempio f ( x) = a ⋅ x + b ⋅ x 2 + c ⋅ x 3 2. 3. 4. f ( x ) = a + b ⋅ exp( x) f ( x) = a + b ⋅ exp(− x) f ( x) = a + b ⋅ ln( x) 5. f ( x) = a + b ⋅ ( x) −1 4.5 Regressioni specializzate In alcuni casi è necessario utilizzare funzioni approssimanti i cui parametri da calcolare non sono semplicemente dei pesi che moltiplicano i vari termini che le compongono (vedi esempi 1-5 del punto precedente), ma sono essi stessi argomento della funzione. Ad esempio si confronti la funzione g ( x) = a + exp(b ⋅ x) con la funzione f ( x ) = a + b ⋅ exp( x) . Nella funzione g(x) il parametro b non è semplicemente il peso del termine exp(x) nella funzione complessiva ma è esso stesso argomento dell’ esponenziale. La differenza è che i parametri a e b della funzione f(x) vengono determinati mediante il metodo dei minimi quadrati che porta a risolvere un sistema di equazioni lineari in a e b. Nel caso della funzione g(x) il calcolo dei parametri a e b mediante una tecnica ai minimi quadrati conduce a risolvere un sistema di equazioni non lineari in a e b che richiede quindi l’ uso di tecniche numeriche. MathCad possiede alcune funzioni specializzate per il calcolo dei parametri di alcune tipiche funzioni matematiche. 1. expfit 2. logfit calcola i parametri della funzione a ⋅ exp(b ⋅ x) + c calcola i parametri della funzione a ⋅ ln( x + b) + c 3. pwrfit 4. sinfit calcola i parametri della funzione a ⋅ x b + c calcola i parametri della funzione a ⋅ sin( x + b) + c a calcola i parametri della funzione 1 + b ⋅ exp(−c ⋅ x) 5. lgsfit expfit, lgsfit, logfit, pwrfit, sinfit Sintassi Descrizione Argomenti vx, vy vg Commenti expfit(vx,vy,vg), lgsfit(vx,vy,vg), logfit(vx,vy,vg), pwrfit(vx,vy,vg), sinfit(vx,vy,vg) Forniscono i parametri a, b e c per definire le funzioni descritte nei punti 1-5 vx e vy sono i vettori dei dati sperimentali vg è un vettore che contiene i valori di partenza per i parametri a, b e c (vedi le tecniche numeriche descritte nel capitolo 7. Utilizzano tecniche basate sui minimi quadrati non lineari. Utilizzano quindi i metodi numerici descritti nel capitolo 7. Ridurreil valore della variabile TOL migliora l' accuratezza con cui queste funzioni calcolano i valori dei parametri 2. APPROSSIMAZIONI DI DATI E FUNZIONI CON MATHCAD 21 4.6 Regressione non lineare generalizzata Si vuole approssimare una serie di dati con la funzione F ( x,α , β )α ⋅ β ⋅ x β −1 ⋅ exp(−α ⋅ x β ) . Nessuna delle funzioni di MathCad viste finora può calcolare i parametri di questa funzione. Una possibilità è l’ utilizzo della funzione Minerr. F( x, α , β ) := α ⋅ β ⋅ x β −1 11 R ( α , β ) := i α := 1 ( β ⋅ exp −α ⋅ x ) (y i − F(xi , α , β ))2 β .258 .511 .543 .701 .506 β := 1 .891 .606 1.081 .622 valori di prova x := α .1 .322 =0 Given R(α , β ) .132 0 := Minerr ( α , β ) α = 0.50218 β = 2.00035 1 1.27 y := .569 1.46 .453 1.65 .438 1.839 .316 2.029 .29 2.219 .195 yi F( z, α , β ) 0.5 0 0 1 2 3 4 xi , z Given… Minerr Sintassi Descrizione Argomenti var1, var2,… Commenti Given somma scarti quadratici = 0 Minerr(var1, var2, …) Fornisce i valori delle variabili var1, var2, … più prossime a risolvere un sistema di equazioni specificate da Given. Le istruzioni Given… Minerr costituiscono un solve block. sono variabili reali o complesse a cui bisogna fornire valori di prova fuori dal blocco Given… Minerr La funzione Minerr è molto simile alla funzione Find e usa esattamente lo stesso algoritmo. La differenza è che se anche il sistema non ha soluzioni, Minerr cercherà comunque i valori più prossimi a risolvere il sistema. La funzione Find in questo caso darebbe un messaggio di errore avvertendo di non poter trovare una soluzione. L’ uso di Minerr è esattamente identico a quello di Find. La necessità di una maggiore accuratezza dei risultati richiede di ridurre il valore di TOL (convergence tolerance). Il significato di TOL è descritto nel paragrafo 7.x. Allo stesso modo potrebbe essere utile ridurre il valore di CTOL (constraint tolerance). CTOL controlla quanto un vincolo deve essere rigido affinché una soluzione sia accetabile. Ad esempio CTOL=0.001 (valore di defaoult) indica che il vincolo x<2 può considerarsi soddisfatto se x<2.001 Minerr in genere fornisce una soluzione che minimizza l' errore. Minerr non garantisce che il risultato sia un minimo assoluto. La qualità delle soluzioni va sempre verificata con il calcolo della deviazione standard o dello scrto quadratico medio. Minerr è particolarmente utile nel risolvere problemi a minimi quadrati non lineari A. M. Ferrari - Appunti di LPCAC 22 5 APPENDICE 5.1 Metodo di Lagrange Presenteremo ora un metodo numerico per la costruzione del polinomio Pn ( x ) . x−xj n l i (x ) = ∏ j =0 x i − x j j ≠i , i = 0,1,..., n Si ponga : (16) evidentemente l i (x ) ∈ Pn , i = 0,1,..., n 1 ( ) j =i l i x j = δ ij i, j = 0,1,..., n 0 j≠i I polinomi l i (x) , i=0,..n sono detti polinomi caratteristici di Lagrange ed attraverso di essi è possibile ottenere Pn (x) nella seguente forma detta di Lagrange: Pn ( x ) = Infatti : ( ) n li (x ) f i (17) i =0 Pn x j = n δ ij f i = f j , i =0 j = 0,1,..., n . (18) 2. APPROSSIMAZIONI DI DATI E FUNZIONI CON MATHCAD 23 6 BIBLIOGRAFIA [1] [2] [3] [4] [5] [6] [7] G. Monegato Calcolo Numerico Levrotto e Bella 1985 A. Quarteroni Elementi di Calcolo Numerico Progetto Leonardo 1994 W. H Press et al. Numerical Recipes Cambridge University Press 1992 R. Levi Elementi di Statistica Sperimentale Istituto per le ricerche di tecnologie meccaniche Vico Canavese 1972 R. G. Mortimer Mathematics for Physical Chemsitry Academic Press 1999 Mathcad2000 Reference Manual MathSoft 2000 MathCad2000 User's Guide MathSoft 2000