segm area3

Calcolo numerico{jcomments on}

In molte applicazioni presentate in questo sito è necessario eseguire derivazioni o integrazioni di funzioni per osservare graficamente l'evoluzione nel tempo di grandezze elettriche.

Le operazioni sono:

la derivazione di una funzione y(x)

l'integrazione di una funzione y(x)

 

Per esempio è stata usata la derivazione numerica per calcolare la potenza assorbita da un induttore in un circuito interessato da una corrente variabile oppure l'integrazione numerica per calcolare la corrente assorbita da un condensatore o calcolare l'energia erogata da un generatore in condizioni di tensione e corrente variabili ...

Derivazione ed integrazione numerica sono vantaggiosi sia per evitare il calcolo della derivata o dell'integrale che possono essere piuttosto difficoltosi per funzioni non troppo regolari (es. la tensione a doppia semionda sinusoidale frazionata come emerge in uscita di un ponte a SCR), sia per evitare la soluzione analitica che consiste nell'andare a studiare la funzione risultante per poi disegnarsela, sia per evidenziare visivamente l'esito di una manipolazione di qualche parametro con una grafica di rapida costruzione.

 

Con il calcolo numerico si fanno approssimazioni, i matematici potrebbero non apprezzare, si commettono errori ma si ha il grande vantaggio di "vedere" graficamente come si presenta la situazione delle varie grandezze e forse gli ingegneri apprezzano.

Senza contare il fatto che l'approccio numerico è molto intuitivo e può essere gradito da chi non ha una formazione universitaria.

La derivazione e l'integrazione numerica sono state usate con il "foglio di calcolo" e con Scratch. Scratch ha il vantaggio, a causa della maggiore lentezza e grazie all'output grafico, di fare apprezzare l'evoluzione nel tempo delle varie grandezze in gioco.

Dopo aver esaminato alcuni aspetti teorici del calcolo numerico (infn Napoli e altri) ho scelto di procedere in questo modo:

- il calcolo avviene per suddivisione dell'intero intervallo di tempo in esame in moltissimi intervalli molto brevi facendo in modo di calcolare ogni volta il rapporto incrementale o l'area del trapezio. 

- sia il foglio di calcolo che Scratch si prestano benissimo all'operazione perchè si può suddividere l'intero intervallo in piccolissimi intervalli e gli errori possono essere minimizzati a piacere.

- è facile visualizzare subito, tramite i grafici, l'esito della manipolazione dei parametri.

Occorre escogitare qualche accorgimento per risolvere il problema agli estremi dell'intervallo in esame e per evitare errori grossolani in prossimità di rapide variazioni di valori (come nella funzione gradino) ... e ammettere qualche errore di troppo per apprezzare il vantaggio di osservare subito l'effetto delle nostre manipolazioni.

Solo a questo punto, se l'errore è un problema, conviene utilizzre la trattazione analitica.

Approfondimenti:

wikipedia

UniPisa R. Bevilacqua O. Menchi

UniVerona Stefano De Marchi

 

 

La derivazione

La derivata di una funzione, dal punto di vista geometrico, è la pendenza della retta tangente alla curva nel punto considerato (nota 1).derivata1

Il grafico mostra in rosso la funzione y(x) che varia con il variare di x.

Il punto A è definito dalle coordinate x0, y0.

Si vuole individuare la derivata nel punto A. Questo valore si può ricavare solo con metodi analitici. La retta cercata è la retta t disegnata in nero. 

Con il calcolo numerico si tratta di "andarci molto vicino" ricavando la pendenza che ha la retta che interseca la curva in due punti molto prossimi fra loro di cui uno è il punto A.

Al posto della derivata si calcola numericamente il rapporto incrementale e si fa tendere a valori molto piccoli l'incremento in modo che il valore calcolato sia molto vicino alla pendenza della funzione nel punto in esame (nota 2).

L'incremento è l'intervallo fra due ascisse successive e viene indicato con ∆x.

Si considerano i due punti A e C che si presentano alle ascisse x0 e x2 allora l'incremento è ∆x=x2-x0,

Si ricava il valore della grandezza y all'estremo inferiore dell'intervallo x0 e lo chiamiamo y0 ed il valore della grandezza y nel punto finale x2 e lo chiamiamo y2, il rapporto incrementale in detto intervallo è:

rapporto incrementale = (y2 - y0)/∆x 

Questa operazione corrisponde al calcolo della tangente trigonometrica dell'angolo α del triangolo rettangolo colorato di turchese dove

tan(α) = CP/PAderivata2

infatti CP = y2 - y0 e PA = x2-x0 = ∆x

Si vede che la retta b, colorata in blu, non è una buona approssimazione della tangente t.

Si utilizza allora il punto B che si trova più vicino al punto A per cui, ora, il rapporto incrementale si scrive

rapporto incrementale = (y1 - y0)/∆x

dove ∆x = x1-x0 che è più breve di prima.

La nuova approssimazione della retta tangente t è la retta verde v che sembra già più vicina.

Quanto più si avvicina il punto B ad A tanto più la retta trovata approssima la tangente t (nota 3) e l'errore è minimo.

 

derivata4Implementazione

Con il foglio di calcolo la soluzione viene affrontata in modo leggermente diverso: non si fa riferimento ad un punto successivo ma ad uno precedente per il semplice fatto che il calcolo numerico viene fatto procedere per ascisse via via crescenti e si conosce il valore precedente mentre non è scontato che si conosca già il valore successivo (per Scratch è così).

Nel caso in esame si utilizza un punto D che si presenta per ascisse inferiori al punto A in considerazione. Il ragionamento non cambia.

Esempio di implementazione con il foglio di calcolo.

Si imposta nella colonna B il calcolo del seno trigonometrico di x collocato nella colonna A.

derivata fc

 

- si pone ∆x come parametro nella cella A9

- nella colonna A si impostano gli intervalli equidistanti ∆x: A12=A11+A$9

- nella colonna B si calcola il seno di x: B12=seno(A12)

- nella colonna C si calcola il rapporto incrementale con l'espressione C12=(B12-B11)/A$9

dove si vede che il denominatore è l'incremento dell'ascissa, che rimane fisso e pari al valore della cella A9 ed il numeratore è la differenza fra il valore attuale ed il valore precedente.

Nella cella C11 non viene effettuato il calcolo per assenza di un valore precedente ... si può ovviare in tanti modi, se serve.

 

Esempio di implementazione con Scratch:

derivare- si fissa a priori l'incremento della variabile x con ∆x,

- si calcola l'incremento come differenza fra il valore y attuale ed il valore yp precedente, che deve essere noto in qualche modo

- viene assegnato alla variabile derNum il rapporto incrementale ∆y/∆x

- si assegna a yp il valore attuale di y in modo che diventi il 'valore precedente yp' per il successivo intervallo

- si incrementa la x di ∆x e si ripete dall'inizio

 

 Un esempio realizzato con Scratch con la funzione seno e la sua derivata si ha in questo file.

 

L'integrazione

Dal punto di vista geometrico l'integrazione consiste nel calcolare l'area con segno sottesa alla curva y(x) in rosso a partire dall'ascissa A fino all'ascissa corrente x (nota 4).integrale1

L'area in turchese, compresa fra l'ascissa X0, la curva rossa, l'ascissa x1 e l'asse delle ascisse è l'integrale definito tra x0 e x1 della f(x).

L'area del segmento viene calcolata con il metodo dei trapezi:

area = (base maggiore + base minore)/2*altezza = (y1+y0)/2*(x1-x0) (nota 5)

Le aree vanno prese con segno che è lo stesso assunto dalla funzione y(x) in quel segmento.

Si commette un errore perchè il segmento AB non si sovrappone al tratto di curva rossa tra A e B. Una piccola area compresa fra la curva rossa e la corda AB viene trascurata e questo valore va ad accumularsi alla somma algebrica delle altre aree trascurate.

integrale2Una volta calcolata l'area in turchese si passa al segmento successivo x1-x2 arancione e se ne calcola l'area con lo stesso metodo, il risultato lo si aggiunge al precedente

L'integrale della funzione y(x) fra x0 e x2 è la somma dell'area turchese più quella arancione.

Mano mano che si procede per valori crescenti di x si aggiungono algebricamente nuove aree quindi anche l'integrale è una funzione di x e se ne può disegnare la curva.

Per calcolare l'area in un intervallo ampio si fanno approssimazioni che partono dalla suddivisione dell'intervallo interessato in innumerevoli intervalli piccolissimi sui quali si ripete il calcolo con il metodo dei trapezi.

 

La soluzione di questa operazione ha come difetto la necessità di dover tenere conto dell'integrale che riguarda valori minori di x0 e che andrebbe aggiunto ai valori calcolati.

Nei calcoli viene aggiunta sempre una costante C per tenere conto di quello che per noi è uno stato iniziale.

La costante C può essere anche nulla come é il caso dello studio dei fenomeni transitori con parametri iniziali tutti nulli.

 

Implementazione

Con il foglio di calcolo si tratta di suddividere l'intervallo A-C in segmenti brevi pari a ∆x e di calcolare per ciascun intervallo l'aea del trapezio e quindi di aggiungere il valore trovato alla sommatoria di quelli precedenti compreso la costante iniziale da imporre manualmente.integrale fc

Si imposta nella colonna B il calcolo del seno trigonometrico di x collocato nella colonna A.

- si pone ∆x come parametro nella cella A9

- nella colonna A si impostano gli intervalli equidistanti ∆x: A12=A11+A$9

- nella colonna B si calcola il seno di x: B12=seno(A12)

- nella colonna C si calcola l'area del trapezio con l'espressione C12=(B12+B11)/2*A$9 + F11

F11 è la costante numerica da usare per aggiustare il risultato ... in questo caso è necessario perchè la funzione attesa è nota in quanto l'integrale indefinito di sin(x) è -cos(x) che esiste solo fra i valori -1 e +1.

Nelle righe successive si ricalcola l'area del trapezio ed il risultato è aggiunto al valore della cella superiore.

 

Esempio di implementazione con Scratch:

integrale Sc- si fissa a priori l'incremento della variabile x con ∆x,

- si calcola l'area del trapezio utilizzando il valore y attuale ed il valore yp precedente, che deve essere noto in qualche modo

- viene aggiunto alla variabile intNum il risultato appena trovato

- si assegna a yp il valore attuale di y in modo che diventi il 'valore precedente yp' per il successivo intervallo

- si incrementa la x di ∆x e si ripete dall'inizio

Un esempio realizzato con Scratch con la funzione seno e il suo integrale si ha in questo file.

Con Scratch è stata realizzata una simulazione dei moti centrali utilizzando l'integrazione numerica: vai qui.

 

E' stato elaborato un foglio di calcolo per la verifica della bontà delle considerazioni qui riportate che viene messo a disposizone in formato ods (OpenOffice) scaricabile qui.

Su una pagina si fa una verifica sui calcoli trigonometrici con y=sen(x) come funzione da derivare e integrare numericamente, su una seonda pagina si ripete l'esperimento con la funzione esponenziale y=ex.

In questi due casi ci sono ulteriori colonne con il calcolo esatto della funzione derivata e della funzione integrale ed il calcolo dell'errore come differenza tra valore calcolato numericamente e valore atteso calcolato analiticamente.

Su di una terza pagina c'è lo sviluppo della soluzione di un'equazione differenziale usata per studiare i circuiti ohmico-induttivi con il calcolo della potenza assorbita dall'induttanza.

Approfondimenti su derivate ed integrali unifi.

 

note

nota 1: la pendenza di una retta è i suo coefficiente angolare

nota 2: con la derivata si fa tendere l'incremento a 0.

nota 3: al numeratore c'è una differenza fra due valori molto vicini la cui distanza non deve essere paragonabile agli errori di approssimazioni dovuti al metodo usato per procurarseli; di solito se i valori sono calcolati con lo stesso strumento (foglio di calcolo, scratch ..) la precisione del risultato è sufficiente, ma occorre vigilare e sospettare sempre, specie se ci si trova davanti a risultati strani

nota 4: dal punto di vista analitico, l'integrale di y(x) restituisce una funzone Y(x) la cui derivata è proprio la funzione in questione Y'(x) = y(x); l'integrazione è l'operazione inversa a quella di derivazione. La derivata, cioè la pendenza in ciascun punto della funzione integrata Y(x), non cambia aggiungendo una costante C.

nota 5: l'argomento è stato anchetrattato a proposito del calcolo della potenza nei circuiti elettrici in regime variabile (vedi qui)