Alcune esperienze con MATLAB nella ricerca e didattica in Fisica Matematica


Tommaso Ruggeri

Relazione tenuta al Convegno Matlab organizzato dalla Teoresi su: Il Mondo Numerico Incontra il Mondo Reale - Bologna 14 Ottobre 1994.



Introduzione

Da molti anni presso il nostro Centro Interdipartimentale di Ricerca per le applicazioni della Matematica (C.I.R.A.M.) ci interessiamo della problematica legata ad una didattica della Matematica in seno alla Facoltà di Ingegneria che tenga conto dell enormi possibilità che può offire l'uso del Computer. In questo ambito abbiamo realizzato diversi libri e fascicoli sia nel settore dell'Analisi Matematica che in quello della Meccanica Razionale [1]-[5]. In questi libri vengono associati ad esercizi di tipo tradizionale anche problematiche che richiedono un'indagine numerica. In questi ultimi allo studente non viene richiesto di realizzare di fatto un programma, ma soltanto che egli sappia concepire un ordine logico (del tipo flow-chart) necessario alla realizzazione di un ipotetico programma. Un esercizio in tal senso richiede da parte dello studente, oltre che una precisa conoscenza degli argomenti sviluppati nella teoria, anche un accurato esame dei particolari nonchè una seppur minima conoscenza di argomenti di analisi numerica. Per ciascuna di queste esercitazioni viene fornita dagli autori una possibile soluzione e proposto un programma che si trova accluso nel software a corredo. Tali programmi possono poi essere utilizzati per la risoluzione dei rimanenti esercizi proposti. L'utilizzazione del P.C. viene quindi vista come strumento didattico non passivo, ma atto a stimolare l'apprendimento di tecniche numeriche e grafiche che il calcolatore ha il pregio di svolgere in tempi brevi. In altre circostanze gli aspetti numerici sono un effettivo completamento all'analisi qualitativa laddove non è possibile ricavare con carta e penna la soluzione esplicita dei problemi (si pensi, per esempio, alle equazioni differenziali non-lineari). Naturalmente questi supporti diventano utili solo quando tutta la didattica (lezioni ed esercitazioni) sia in sintonia con una tale filosofia. Nell'esperienza sopra menzionata, gli autori durante le ore di esercitazioni si avvalevano di P.C. portatili dotati di un'interfaccia per lavagna luminosa e integravano esercitazioni e lezioni utilizzando di volta in volta i relativi programmi. Questo ovviamente comporta preliminarmente la realizzazione di strutture idonee e di docenti disponibili a modificare, seppure di poco, la didattica tradizionale. è opinione di molti che questa sia una buona strada anche per la riconosciuta accoglienza favorevole che gli studenti hanno manifestato laddove questi esperimenti hanno avuto luogo. Da qualche tempo a questa parte, abbiamo provato ad utilizzare a questi fini il programma MATLAB che grazie alla sua potenza di calcolo e, nell'ultima release, le sue enormi capacità grafiche, permette con pochi passi di programma di raggiungere velocemente il risultato, senza doversi preoccupare di fatti numerici marginali alle questioni trattate. In questa breve relazione, desidero, limitandomi al settore della Fisica Matematica, fornire alcuni esempi di come sia possibile realizzare alcuni brevi ma efficaci programmi che aiutano lo studente a meglio comprendere la disciplina che sta studiando. Infine presenterò anche un esempio di utilizzo di MATLAB in un argomento di ricerca che stiamo portando avanti con il gruppo di Fisica Matematica del CIRAM.

Esempio n.1: Il Computer permette di comprendere meglio un problema.

Il primo esempio, consiste di far comprendere bene ed in maniera interattiva, come le componenti di un operatore matriciale cambiano al cambiare della base. Considerando il caso di matrici 2 x 2 simmetriche, si modifica mediante il comando di ginput la direzione degli assi e si riscrive la matrice mediante la trasformazione di similitudine. Man mano che ci si avvicina alla direzione degli autovettori, lo studente osserva che gli elementi della diagonale principale tendono agli autovalori mentre le restanti componenti tendono a zero. Basta un esempio come questo per attirare l'attenzione degli studenti in maniera più efficace che qualsiasi altra esercitazione di tipo tradizionale sull'argomento. Le prime due figure mostrano le comonenti dell'operatore rispetto alla base di partenza e rispetto alla base degli autovettori. Ecco il listato che realizza il programa in matlab:


figure('Position',[10 400 600 300])
xpsubplt(1,2,1);
f=[1 5
5 9];
pltmat(f,'F','m',15);
xpsubplt(1,2,2);
plot([-1 1],[0 0],'y',[0 0],[-1 1],
'r',1,0,'yo',0,1,'ro');
axis([-1.5 1.5 -1.5 1.5]);
title('Cambiamento Base ed Autovettori');
but=1;
while but==1
[x,y,but]=ginput(1);
dist=sqrt(x^2+y^2);
r=[y/dist -x/dist
x/dist y/dist];
f1=r'*f*r;
xpsubplt(1,2,1);
pltmat(f1,'F','m',15);
xpsubplt(1,2,2);
plot([-y/dist y/dist],[x/dist -x/dist],'y',
[-x/dist x/dist],[-y/dist y/dist],'r',
y/dist,-x/dist,'yo',x/dist,y/dist,'ro',
[-1 1],[0 0],'y',[0 0],[-1 1],
'r',1,0,'yo',0,1,'ro');
axis([-1.5 1.5 -1.5 1.5]);
title('Cambiamento Base ed Autovettori');
end
xpsubplt(1,2,2);
[d1,l1]=eig(f);
dist=1;
r=[d1(1,2) d1(1,1)
d1(2,2) d1(2,1)];
f1=r'*f*r;
xpsubplt(1,2,1);
pltmat(f1,'F','m',10);
xpsubplt(1,2,2);
x=r(2,1);
y=r(1,1);
plot([-y/dist y/dist],[x/dist -x/dist],
'y',[-x/dist x/dist],[-y/dist y/dist],
'r',y/dist,-x/dist,'yo',
x/dist,y/dist,'ro',[-1 1],[0 0],'y',
[0 0],[-1 1],'r',1,0,'yo',0,1,'ro');
axis([-1.5 1.5 -1.5 1.5]);
title('Cambiamento base ed Autovettori');

Matrice iniziale.

Matrice rispetto alla base degli autovettori.


Esempio n.2: Il Computer pone ulteriori problemi!

Un classico problema di Meccanica è quello dell'equilibrio di un corpo rigido pesante appoggiato in un numero finito n di punti su un piano orizzontale liscio. Come è ben noto l'equilibrio sussiste purchè il centro di pressione sia non esterno al poligono di appoggio. Tale poligono possiede i seguenti tre requisiti: Supponendo di conoscere le coordinate cartesiane dei punti di appoggio è estremamente semplice per un qualsiasi studente disegnare, in base alle caratteristiche sopra menzionate il poligono. Rimane quindi come unico restante problema il calcolo delle reazioni vincolari nei punti di appoggio. Dal punto di vista di un programmatore si pone però un problema aggiuntivo rispetto a quello tradizionale, non essendo il computer dotato di occhi per vedere i punti! Bisogna infatti ideare un procedimento numerico atto a costruire il poligono avendo a disposizione soltanto i valori numerici delle coordinate dei punti di appoggio. Agli studenti in aula viene quindi presentata una nuova problematica. È interessante osservare come ogni anno vi è sempre l'intervento di studenti che indicano alcune possibili soluzioni del problema. Una di queste è la seguente: fissiamo inizialmente due punti di appoggio distinti e con . Per stabilire se la congiungente tali punti è un lato del poligono si valuta la distanza, con segno, tra la retta e ciascuno dei restanti punti di appoggio :

Se per ogni tutte le distanze hanno lo stesso segno, sicuramente il lato appartiene al poligono di appoggio e viene fatto disegnare. Allo studente non rimane che concepire una breve parte di calcolo per poter valutare anche le reazioni vincolari supponendo la piccola cedevolezza lineare del suolo e determinare gli eventuali punti di distacco. La fig. 3 rappresenta un esempio della schermata grafica fornita dal programma realizzato con Matlab. Valori negativi delle reazioni (come in figura) si interpretano come distacco dei corrispondenti punti di appoggio. In tal caso è necessario ricostruire il poligono di appoggio scartando questi punti e ripetendo il calcolo delle reazioni.

Poligono di appoggio e reazioni vincolari.


Esempio n.3: Il Computer non permette superficialità.

Come è noto vi sono teoremi la cui dimostrazione è costruttiva. Pertanto l'ideazione di un programma o perlomeno di un flow-chart permette allo studente di chiarire nei minimi dettagli la stessa dimostrazione. Un tipico esempio è costituito dal Teorema Polare dell'algebra lineare che ha molteplici applicazioni nella Meccanica dei Continui deformabili. Il quesito proposto agli studenti nel nostro Laboratorio è il seguente:

Descrivere le fasi logiche necessarie per la realizzazione di un programma che permetta, dato un operatore matriciale tex2html_wrap_inline76 con tex2html_wrap_inline78 , di determinare la matrice di rotazione tex2html_wrap_inline80 e le dilatazioni tex2html_wrap_inline80 e tex2html_wrap_inline84 tali che

Per semplicità, nella realizzazione pratica del programma, si consideri il caso in cui F è tex2html_wrap_inline86 .

Le varie fasi necessarie per la costruzione di tex2html_wrap_inline80 , tex2html_wrap_inline90 e tex2html_wrap_inline84 sono le seguenti. Bisogna dapprima calcolare la matrice tex2html_wrap_inline94 che è sicuramente simmetrica e definita positiva. Nel caso tex2html_wrap_inline86 è facile anche calcolare gli autovalori gli autovalori tex2html_wrap_inline6 (tutti positivi) di tex2html_wrap_inline102 e i corrispondenti autovettori (ortogonali e scelti normalizzati)

displaymath62

Si costruisce quindi il relativo operatore di rotazione

displaymath12


Rispetto alla base tex2html_wrap_inline104 , la matrice tex2html_wrap_inline102 è diagonale e si può costruire l'operatore

displaymath8


anch'esso simmetrico e definito positivo, nonchè tex2html_wrap_inline108 . Mediante la trasformazione di similitudine indotta da tex2html_wrap_inline110 si ottiene l'operatore tex2html_wrap_inline90 :

displaymath63

L'operatore di rotazione si ricava da

displaymath64

Infine la dilatazione tex2html_wrap_inline84 si ottiene per trasformazione di similitudine (mediante tex2html_wrap_inline80 ) da tex2html_wrap_inline90 :

displaymath65

Il punto più delicato della dimostrazione stà nella necessità di passare dalla base di partenza a quella degli autovettori e ritornare poi a quella di prima per poter costruire la dilatazione tex2html_wrap_inline90 . Inoltre lo studente deve avere un quadro preciso di buona parte degli argomenti tipici dell'algebra lineare: operatore di rotazione, operatore inverso, trasformazioni di similitudine, autovalori ed autovettori, ecc... Di seguito viene riportato il listato ed alcune figure relative a questo problema.

pltmat(['F=RB';'F=CR'],'Teorema Polare','m',18)
pause
%f=input('dammi F =');
f=[1 2
-1 3];
pltmat(f,'F','m',18);
pause
b2=f'*f;
b=sqrtm(b2);
pltmat(b,'B','m',18);
pause
r=f*b^(-1);
pltmat(r,'R','m',18);
pause
c=r*b*r';
pltmat(c,'C','m',18);
pause
xpsubplt(1,3,1);
pltmat(f,'F','g',10);
xpsubplt(1,3,2);
pltmat(r,'R','w',10);
xpsubplt(1,3,3)
pltmat(b,'B','r',10);
pause
xpsubplt(1,3,1);
pltmat(f,'F','g',10);
xpsubplt(1,3,2);
pltmat(c,'C','w',10);
xpsubplt(1,3,3)
pltmat(r,'R','r',10);
pause
xpsubplt(2,2,1);
pltmat(f,'F','m',12);
xpsubplt(2,2,2);
pltmat(r*b,'R B','g',12);
xpsubplt(2,2,3);
pltmat(r*r','R Rt','r',9);
xpsubplt(2,2,4);
pltmat(eig(b),'eig(B)','w',12);
pause
xpsubplt(2,2,1);
pltmat(f,'F','m',12);
xpsubplt(2,2,2);
pltmat(c*r,'C R','g',12);
xpsubplt(2,2,3);
pltmat(r*r','R Rt','r',9);
xpsubplt(2,2,4);
pltmat(eig(c),'eig(C)=eig(B)','w',12);
pause
xpsubplt(1,1,1);
axis([-1 4 -1 4]);
hold on
x0=[0,0,1,1,0];
y0=[1,0,0,1,1];
v1=[0; 1];
v3=[1; 0];
w1=b*v1;
w3=b*v3;
z1=r*w1;
z3=r*w3;
x1=[0, w3(1,1), w3(1,1)+w1(1,1), w1(1,1), 0];
y1=[0, w3(2,1), w3(2,1)+w1(2,1), w1(2,1), 0];
x2=[0, z3(1,1), z3(1,1)+z1(1,1), z1(1,1), 0];
y2=[0, z3(2,1), z3(2,1)+z1(2,1), z1(2,1), 0];
axis('square');
title('Teorema Polare  F = C R');
patch(x0,y0,'r');
title('Corpo indeformato v');
pause
patch(x1,y1,'y');
patch(x0,y0,'r');
title('La dilatazione B v');
pause
patch(x2,y2,'b');
patch(x1,y1,'y');
patch(x0,y0,'r');
title('La rotazione finale R B v = F v');
pause
w1=r*v1;
w3=r*v3;
z1=c*w1;
z3=c*w3;
x1=[0, w3(1,1), w3(1,1)+w1(1,1), w1(1,1), 0];
y1=[0, w3(2,1), w3(2,1)+w1(2,1), w1(2,1), 0];
x2=[0, z3(1,1), z3(1,1)+z1(1,1), z1(1,1), 0];
y2=[0, z3(2,1), z3(2,1)+z1(2,1), z1(2,1), 0];
title('Teorema Polare F = C R');
patch(x0,y0,'r');
title('Corpo indeformato v');
pause
patch(x1,y1,'g');
patch(x0,y0,'r');
title('La rotazione R v');
pause
patch(x2,y2,'b');
patch(x1,y1,'g');
patch(x0,y0,'r');
title('La dilatazione finale C R v = F v');
hold off


displaymath66


displaymath67


Controllo: tex2html_wrap_inline80 = rotazione, tex2html_wrap_inline90 definita positiva.


Applicazione grafica del teorema polare in un problema di deformazione omogenea. Si parte dal quadrato rosso e si applica la dilatazione tex2html_wrap_inline90 ottenendo il disegno in giallo e quindi si applica l'operatore di rotazione tex2html_wrap_inline80 . Oppure si fa prima la rotazione e poi la dilatazione passando dal rosso-verde-blu.


Esempio n.4: Analisi qualitativa e Grafica

Come abbiamo detto nell'introduzione l'usare Matlab permette di determinare soluzioni numeriche di sistemi dinamici non lineari. Le possibilità grafiche offrono allo studente una maniera espressiva ed immediata per comprendere l'aspetto fisico e l'analisi qualitativa. Nella figura 6 è riportata l'immagine prodotta dal programma diff2.m che fornisce la soluzione di un'equazione differenziale non lineare del secondo ordine e la traiettoria nel piano di fase.


Sono attive quattro finestre grafiche che forniscono rispettivamente la funzione, la derivata, il piano delle fasi. Vi è anche è la possibilità di prolungare il tempo in modo da visualizzare un comportamento asintotico. Infine, in figura 7 viene rappresentato un esempio di energia potenziale e il corrispondente diagramma di fase ottenuto con il programma pfase.m



Equazione alle derivate parziali: Interazioni tra Onde lineari

Vogliamo, adesso mostrare come con pochissime righe scritte in Matlab sia possibile visualizzare l'evoluzione e l'interazione di onde lineari soluzioni della classica equazione iperbolica del secondo ordine alle derivate parziali per la funzione incognita u(x,t):

Prendiamo un dato iniziale che abbia derivata nulla e u(x,0) che vale zero eccetto in due intervalli in cui ha la forma di un seno (vedi figura 8). Il dato iniziale viene scritto come funzione .m nel file ondad.m

function y=ondad(x);
y=(x> -2).*(x< -1).*sin(-(x+1)*pi)+
   2*(x>1).*(x<2).*sin((x-1)*pi);
end

Basta allora scrivere la soluzione fondamentale, per avere subito la visualizzazione dell'evoluzione ed interazione delle onde (figg. successive).

x=-5:.01:5;
plot(x,ondad(x));
%axis([-1 2 0 1]);
pause
for t=0:.04:2.4;
x1=x-t;
x2=x+t;
y=(ondad(x1)+ondad(x2))/2;
plot(x,y)
%axis([-1 2 0 1]);
drawnow
end



Fig.8: Onde iniziali



Le due onde evolvono in altre due onde.



Interazioni tra due onde



Le quattro onde finali.

Esempio n.6: Mappe ed Attrattore di Henon

Come ultimo esempio nella didattica, voglio portare un caso in cui il Computer fa la parte effettivamente del protagonista. Questo è un prototipo della problematica non lineare che riguarda gli argomenti attuali del caos, frattali, attrattori strani, ecc... Si consideri la Mappa quadratica:

displaymath68

al variare dell'intero i=1,2..., si rappresenta il punto di coordinate tex2html_wrap_inline136 e si osserva che i punti si distribuiscono in maniera caotica, ma al crescere del numero di iterazioni vanno ad infittirsi in una regione a forma di cometa nel piano (attrattore strano) (vedi fig. 12)



Attrattore di Henon.

Un Esempio nella Ricerca: Onde non lineari

Per finire desidero portare un esempio di utilizzo di Matlab in una ricerca che ho svolto insieme al Prof. Muracchini ed al dott. Seccia [6]. Il problema riguarda la seguente problematica di Fisica delle basse temperature. Sperimentalmente si è osservato che prendendo un campione di cristallo e portandolo a temperature dell'ordine di pochi gradi Kelvin, una perturbazione di temperatura creata ad un estremo del campione si propaga come un'onda in contrasto con l'usuale equazione parabolica del calore. Tale fenomeno conosciuto come secondo suono era stato in precedenza rilevato nell'elio superfluido. Diverse teorie del secondo suono esistono in letteratura, ma allo stato attuale non sono sufficienti a spiegare due aspetti del fenomeno che invece sono abbastanza evidenti negli esperimenti. Il primo è quello che la velocità di propagazione del secondo suono dipende fortemente dal valore della temperatura imperturbata To, ed il secondo che la forma dell'onda cambia durante l'evoluzione, al cambiare di To. In alcuni lavori abbiamo proposto un modello altamente non lineare, che utilizzando la metodologia della Termodinamica Estesa (ET), permette di spiegare questi due aspetti del fenomeno. Utilizzando la potenza di Matlab abbiamo anche fatto una simulazione numerica della propagazione dell'onda di secondo suono. Riportiamo di seguito la simulazione ottenuta per un cristallo di NaF. Nella figura 13 vi è l'onda termica iniziale a forma di un gaussiana che innalza la temperatura da tex2html_wrap_inline138 ad tex2html_wrap_inline140 e nella figura 14 vi è l'evoluzione dell'onda all'istante in cui la soluzione cessa di essere di classe tex2html_wrap_inline142 . Mentre la figura 15 riporta l'evoluzione nel caso di temperatura imperturbata del campione di tex2html_wrap_inline144 . Come si osserva facilmente passando da tex2html_wrap_inline138 (fig. 14) a tex2html_wrap_inline144 (fig.15) la forma dell'onda subisce un cambiamento di forma opposto che sembra confermato negli esperimenti.



Onda iniziale.



Evoluzione dell'onda per temperatura imperturbata di tex2html_wrap_inline138 .



Evoluzione dell'onda per temperatura imperturbata di tex2html_wrap_inline144 .

Bibliografia

  1. S. Matarasso e T. Ruggeri, Laboratorio di Matematica - Primo Corso: Temi di Analisi Matematica e Software Matematico. Progetto Leonardo - Esculapio Ed. Bologna (1991).
  2. A. Muracchini, T. Ruggeri e L. Seccia, Laboratorio di Meccanica Razionale: Esercizi, Temi di esame e Software Matematico. Progetto Leonardo - Esculapio Ed. Bologna (1991).
  3. S. Matarasso e T. Ruggeri, Labmat2 - Dispense di Analisi Matematica II con l'utilizzo di Software Matematico. Vol. 1: Funzioni reali di più variabili; Applicazioni nel campo complesso; Programma Tredimw.exe. Progetto Leonardo - Esculapio Ed. Bologna (1993).
  4. S. Matarasso e T. Ruggeri, Labmat2 - Dispense di Analisi Matematica II con l'utilizzo di Software Matematico. Vol. 5: Elementi di Equazioni differenziali con esempi di dinamica del punto; Temi di esame di Analisi II; Programma Diff2w.exe; Worksheets con Maple V. Progetto Leonardo - Esculapio Ed. Bologna (1994).
  5. Didattica Matematica con l'ausilio del Personal Computer a cura di R. Guidorzi e T. Ruggeri - Pubbl. del CCIB e CIRAM - Pitagora (1992).
  6. T. Ruggeri, A. Muracchini e L. Seccia, Shock Waves and Second Sound in a Rigid Heat conductor. A critical temperature for NaF and Bi. Phys. Rev. Lett. 64, n.22, pp. 2640-2643 (1990). A Continuum Approach to Phonon Gas and Shape Changes of Second Sound via Shock Waves Theory, Nuovo Cimento D, 16,1, pp.15-44 (1994).
  7. I. Müller e T. Ruggeri, Extended Thermodynamics, Springer Tracts on Natural Philosophy 37 - Springer Verlag - New York (1993).


Back to Ruggeri home page

Back to CIRAM home page