Lo scopo
Molti dei nostri lettori conoscono la "battaglia" di Giovanni Schgör per diffondere la cultura della simulazione al computer. Avranno anche notato un suo rammarico per la sensazione che i risultati non siano quelli sperati. Sembrano pochi i giovani che cercano di approfondire l'argomento. Qualche studente universitario, c'è ma sono assenti le scuole tecnico-scientifiche e non solo per quanto riguarda la componente studentesca. Un ostacolo può essere rappresentato da Mathcad, un programma validissimo e potente, ma di costo notevole e difficilmente provabile gratuitamente. Nella speranza che sia possibile in futuro usare on-line le applicazioni Mathcad proposte, sulla base del quale, lo ricordiamo, in questo sito è pubblicato il corso di Schgör Elaborazione Numerica dei segnali, si è pensato di mostrare come utilizzare un foglio elettronico per applicare il metodo delle differenze finite. Sono stati a tal fine riproposti gli esercizi dell’articolo di Schgör “Chi ha paura delle equazioni differenziali?”
Le differenze finite
Il metodo delle differenze finite permette di trovare la soluzione numerica di un'equazione o di un sistema di equazioni differenziali. La modellizzazione matematica di un sistema fisico conduce sempre ad equazioni differenziali le cui soluzioni sono funzioni di una variabile, ad es. il tempo. La ricerca diretta di tali funzioni è un problema che si sa risolvere esplicitamente soltanto in pochi casi. In assenza di una forma esplicita è importante determinare una soluzione approssimata che permetta di stabilire comunque le proprietà della funzione. I valori approssimati della soluzione sono calcolati per un numero discreto di valori della variabile indipendente. L'equazione differenziale è trasformata in una equazione in cui compaiono le differenze finite tra valori consecutivi della variabile indipendente e dei corrispondenti valori delle funzioni cercate. Ciò permette di scrivere equazioni algebriche nelle quali un valore della funzione dipende dall'incremento scelto per la variabile indipendente e dai valori immediatamente precedenti della funzione stessa, oltre che dai coefficienti costanti che compaiono nell'equazione differenziale che sono i parametri del sistema. I valori della variabile indipendente costituiranno un vettore di N elementi distanziati tra loro di un valore costante Dt = T / N se T è l'ampiezza dell'intervallo della variabile indipendente. La soluzione approssimata è, a sua volta, un vettore di N elementi distanziati tra loro di un incremento variabile Dy che dipende dalla struttura dell'equazione differenziale e dai suoi parametri. Si può in genere riconoscere che l'ennesimo termine è funzione di alcuni valori immediatamente precedenti, è cioè definito in maniera ricorsiva. La differenza tra l'indice dell'elemento calcolato ed il più piccolo degli indici degli elementi precedenti da cui esso dipende, definisce l'ordine dell'equazione. Se l'ordine è k, i primi k elementi del vettore sono costanti da definire. Al variare del loro valore si ottengono soluzioni diverse. Pertanto esse andranno scelte in base alle condizioni iniziali che, insieme all'equazione differenziale, definiscono l'oggetto di studio.
Il foglio elettronico
Si presuppone in questo articolo la conoscenza dei concetti di base di un foglio elettronico. Ricordiamo brevemente che le colonne non sono altro che vettori. Ogni cella è un elemento del vettore. Il contenuto di una cella può essere scritto direttamente o calcolato con espressioni matematiche. La scrittura di un'espressione inizia con =' ed utilizza valori o riferimenti ad altre celle usando i segni + , * , - , / , ^, per le operazioni di addizione, moltiplicazione, sottrazione, divisione, elevamento a potenza, oppure come argomenti di altre funzioni. Il foglio elettronico esegue ogni tipo di grafico. Saranno sommariamente descritte le operazioni principali. Per informazioni dettagliate sull'uso di Excel si rimanda però alle pubblicazioni specifiche. Ne esistono scaricabili da Internet naturalmente: qui ad esempio
Grafico di funzione e della sua derivata
Vogliamo tracciare i grafici di una funzione e della sua derivata. Consideriamo il seguente esercizio dell'articolo citato.
La funzione è
ed il foglio di lavoro si presenta così.
La variabile indipendente è x. L'intervallo che interessa
parte da x0 = -5, valore inserito nella cella C2. Consideriamo un
incremento costante Dx = 0,01, valore
inserito nella cella B2. La colonna A contiene il vettore [n] la successione degli interi positivi che sono gli indici degli elementi dei vettori. Costruiamo il vettore [x] di N=1000 elementi. Il primo elemento è x1 =5 e gli altri si ottengono
aggiungendo successivamente Dx. Il
vettore [x] è rappresentato dai valori contenuti nelle celle della colonna B,
da B4 a B1003. La formula scritta nella cella Bi è: Bi-1+B$2. Nella colonna C ci sono gli elementi del vettore funzione calcolati con i valori della colonna B che si trovano
sulla stessa riga. L'istruzione della cella Ci è perciò: =0,2*Bi^3-5*Bi+2.
Potremmo direttamente costruire il vettore che contiene i valori della derivata
(come fatto nella colonna E); ma non è lo scopo che ci stiamo prefiggendo. I
valori del vettore [y'] con le derivate li ricaviamo con il metodo delle
differenze finite: . Non è possibile calcolare il primo elemento. Vi si può assegnare
un valore arbitrario, ovviamente commettendo un errore grossolano nei primi, errore che si riduce nei calcoli successivi (come risulta dalla colonna E, escludendo però i punti in prossimità dei massimi relativi, in coorispondenza dei quali la derivata è nulla)
Nella cella i-esima della colonna D che contiene il vettore [y'] è dunque scritta la formula: =(Ci-Ci-1)/$B$2.
NB:
- il $ davanti mantiene fissa la coordinata di cella che lo segue. La formula infatti basta scriverla su una cella e ricopiarla nelle celle successive. Le coordinate di cella si modificano di conseguenza tranne quelle precedute dal simbolo $.
- scritta la formula in una cella basta poi ricopiarla in tutte le celle del vettore: clic sulla casella con il pulsante destro; scegliere copia dal menù contestuale; puntare il mouse sull'angolo in basso a destra; trascinare verso il basso.
Nel riquadro è illustrato il procedimento matematico con maggiore dettaglio e, successivamente, ci sono i grafici tracciati da Excel:
NB:
- si seleziona l'area dei dati puntantando il mouse sulla prima cella (B4) e itrascinandolo con il pulsante sinistro premuto fino alla cella E1003
- si clicca sul pulsante dei grafici, scegliendo il tipo "dispersione", quindi si precisano le serie (che sono le colonne) che si desidera far comparire nel grafico, nelle finestre di dialogo. La colonna B è l'asse x; le colonne C, D, E le serie che rappresentano la funzione y, e la sua derivata che in D è calcolata con la formula delle differenze finite, in E con l'espressione corretta (nel grafico sono indistinguibili)
Grafico di funzione e delle sue derivate, prima e seconda
Non c'è molta diversità rispetto a quanto fatto nel primo esercizio. E' solo stata aggiunta la derivata seconda della funzione per mostrare come si calcolano gli elementi del vettore che la rappresenta con il metodo delle differenze finite Il foglio si presenta come in figura. A questo proposito osserviamo che
La funzione studiata è scritta nella cella C1. L'intervallo di studio inizia da x0=0, inserito in C3 e ricopiato in B5 come primo elemento del vettore [x] che rappresenta la variabile indipendente. L'incremento Dx=0,01 è inserito nella cella B3. La colonna C contiene il vettore [y], cioè la funzione; la colonna D contiene il vettore con i valori della derivata prima, calcolata come nel precedente esercizio; la colonna E contiene i valori del vettore [y''] derivata seconda, calcolati seconda la formula in intestazione che è dimostrata nel riquadro dei passaggi matematici. Sono pure mostrati i grafici ottenuti con gli strumenti di Excel
Equazione differenziale-1
La prima equazione differenziale che desideriamo risolvere è
E' quella dell'articolo di Schgor. Si tratta di un semplice integrale e la soluzione simbolica non è difficile. Nella figura che mostra il relativo foglio Excel, è riportata nella colonna E. Il nostro scopo è però seguire il metodo numerico. Il vettore che rappresenta la derivata [y'] (colonna C) è immediatamente calcolabile dal vettore [t] (colonna B) che contiene come elementi gli istanti nei quali si calcola la funzione:sono N=10000. Occorre costruire il vettore [y] con i valori della funzione. E' fatto nella colonna D. La giustificazione della formula è riportata nel riquadro con i passaggi matematici. L'intervallo che separa gli istanti è in B2, l'istante iniziale in C2. Le formule nelle celle sono:
- Cella B i-esima: =Bi+B$2 (in B4, corrispondente ad n=1 c'è t0: =B4.
- Cella C i-esima: =3*(Bi^2)-Bi
- Cella D i-esima: =Di-1+$B$2*Ci ( in D4, il valore y1 non si può calcolare)
Come al solito seguono i grafici tracciati da Excel: il primo tracciato per y1=0, il secondo per y1=500
Equazione differenziale – 2
L’equazione che risolviamo stavolta è leggermente più
complicata . Lasciamo al lettore di trovare simbolicamente la
soluzione che è riportata nell’articolo di Giovanni Schgör. Il procedimento matematico
per determinare i vettori-colonna del foglio elettronico che consentono
di tracciare i grafici è il seguente:
Il foglio si presenta dunque così
Le formule delle colonne C e D in cui trovano i valori discreti della funzione y e della sua derivata sono, rispettivamente:
- Cella C i-esima: =Ci-1*(1-($B$2/RADQ(Bi)))+$B$2
- Cella D i-esima: =1-Ci/(RADQ(Bi))
Ed ecco i grafici: il primo tracciato per y1=0 il secondo per y1=1
Download
Il foglio ADDF_Excel_1.xls è contenuto in questo file