Home > Menu > Scheda del prodotto > Esperienza d'uso

Maxima (con Xmaxima)
Interpolazione statistica
a cura di:
Milla Lacchini
Parole chiave: algoritmo, analisi numerica, calcolo algebrico, approssimazione, metodo dei minimi quadrati, programmazione

Maxima è un sistema di calcolo algebrico comprendente un linguaggio di programmazione semplice dal punto di vista della sintassi ma efficace, mediante il quale è possibile descrivere algoritmi per risolvere problemi da quelli classici (di ricerca, ordinamento, etc.) a quelli di analisi numerica. Grazie alla sintassi semplificata del linguaggio, le istruzioni possono essere apprese in tempi ridotti e manipolate senza particolari difficoltà: in questo modo l'attenzione rimane focalizzata sulla risoluzione del problema oggetto di analisi senza disperdersi negli aspetti di carattere formale, ed è possibile conseguire risultati significativi con ragionevole impegno.

La programmazione consente di perseguire importanti obiettivi formativi, fra i quali:

- favorire lo sviluppo di capacità metacognitive;

- acquisire la capacità di lavorare in gruppo attraverso la realizzazione di progetti complessi, e collaborare tra pari nella correzione degli errori dei programmi;

- stimolare negli studenti spirito critico e curiosità intellettuale, permettendo loro di costruire in modo autonomo funzionalità che i vari ambienti rendono disponibili già predefinite.

E' fondamentale, ai fini di promuovere un apprendimento significativo, che la programmazione non venga trascurata, invertendo la tendenza ad abbandonarla che molti docenti hanno assunto, essenzialmente a causa della sproporzione tra lo sforzo prodigato e l'esiguità dei risultati conseguiti.

Vengono di seguito presentate alcune esperienze di programmazione, realizzate nell'ambito del triennio ad indirizzo Brocca scientifico tecnologico presso il Liceo scientifico "G. Ricci Curbastro" di Lugo(RA), che utilizzano moduli sviluppati mediante tale linguaggio, nell'intento di proporre Maxima ai docenti di Matematica come strumento per fare programmazione nell'ambito della disciplina "Matematica e Informatica".

Algoritmo delle divisioni successive per il calcolo del massimo comun divisore tra due interi a e b non nulli (classe terza)

Grafica a raster-scan: algoritmo di Bresenham per la generazione di linee (classe quarta)

Zeri di una funzione (classe quinta)

Interpolazione matematica (classe quinta)

Data una distribuzione di punti (xi,yi) i=1,2,…,n con andamento pressochè lineare, si vuole determinare la retta (y)¯ = m x + q che approssima nel miglior modo possibile tali punti secondo il metodo dei minimi quadrati,, cioè la retta per la quale risulta minima la somma dei quadrati degli scarti

iϵ2i ϵi= yi - (yi)¯ i=1,2,…,n

Si può verificare che tale retta ha equazione y=yb + frac (∑i(xi - xb)(yi - yb), ∑i(xi - xb)2) (x - xb)

dove xb=frac (∑ixi, n) e yb=frac (∑iyi, n) sono le coordinate del baricentro della distribuzione.

Per il coefficiente angolare m, attraverso opportuni passaggi si perviene alla relazione

m=frac (∑i(xi - xb)(yi - yb), ∑i(xi - xb)2) = frac (∑ixiyi - frac (1, n) (∑ixi) (∑iyi), ∑ix2i - frac (1, n) (∑ixi)2)

Costruiamo ora l'algoritmo che, data in input la distribuzione di punti di coordinate (1,-5); (2,-12.4); (3,-15.7); (4,-15.1); (4,-10.5); (5,-1.9); (6,10.7); (7,10.7); (8,27.4) , disegna in un unico grafico i punti e la retta dei minimi quadrati che li approssima.

(C1)

sommaxi:0;

(C2)

sommayi:0;

(C3)

sommaxiyi:0;

(C4)

sommaxi2:0;

(C5)

n:8;

(C6)

y[1]:-5;

(C7)

y[2]:-12.4;

(C8)

y[3]:-15.7;

(C9)

y[4]:-15.1;

(C10)

y[5]:-10.5;

(C12)

y[7]:10.7;

(C13)

y[8]:27.4;

Ciclo che inizializza il vettore delle ascisse e calcola le varie somme

(C14)

for i:1 thru n do (x[i]:i, sommaxi:sommaxi+x[i], sommayi:sommayi+y[i], sommaxi2:sommaxi2+ (x[i])^2, sommaxiyi:sommaxiyi+ x[i]*y[i] );

Calcolo coordinate del baricentro della distribuzione:

(C15)

xb:sommaxi/n;

(C16)

yb:sommayi/n;

Calcolo del coefficiente angolare della retta:

(C17)

m:(n*sommaxiyi-sommaxi*sommayi)/(n*sommaxi2-sommaxi*sommaxi);

Per disegnare il grafico, costruiamo due liste: una con le coordinate dei punti della distribuzione, l'atra con le coordinate di un insieme di punti della retta

(C18)

npuntiretta:10;

(C19)

dx:(x[n]-x[1])/npuntiretta;

(C20)

xini:x[1];

(C21)

p_oss:append(["NoLines: true","LargePixels: true"], create_list([x[i],y[i]],i,1,n));

(C22)

p_retta:append(["NoLines: true","LargePixels: true"], create_list([ev(xini+i*dx,float),ev(m*(xini+i*dx-xb)+yb,float)],i,0,npuntiretta));

Le due liste di punti vengono disegnate su grafico mediante il comando XGRAPH_CURVES, che utilizza il modulo GRAPH. Questo programma di grafica consente di produrre anche animazioni; l'eseguibile può essere scaricato da http://jean-luc.ncsa.uiuc.edu/Codes/xgraph ; non è disponibile per Windows; in ambiente Linux basta copiare l'eseguibile, contenuto nel file xgraph, in /usr/X11R6/bin.

(C23)

xgraph_curves([p_oss,p_retta]);

Bibliografia

1) G.Casadei, M.Lacchini, Il Problem Solving algoritmico, Atti didamatica 2004, Omniacom, Ferrara, 2004

2) D.Bini, M.Capovani, O.Menchi, Metodi numerici per l'algebra lineare , Zanichelli, Bologna, 1988

3) S. Harrington, Computer Graphics, McGraw Hill, 1983

4) F.Fontanella, A.Pasquali, Calcolo numerico , Pitagora, Bologna, 1984

5) I.Galligani, Elementi di analisi numerica, Zanichelli, Bologna, 1987

6) A.Paoluzzi, Informatica grafica, La Nuova Italia Scientifica, 1988

7) D.F. Rogers, Procedural Elements for Computer Graphics, McGraw Hill, USA, 1985, ed.italiana Tecniche Nuove, Milano, 1988

8) J. Stoer, Einfuhrung in die Numerische Mathematik, Springer Verlag, Berlin-Heidelberg-New York,1972, ed. italiana Zanichelli, Bologna, 1974

Licenza Creative Commons

Il contenuto della pagina è tratto dal Servizio di Documentazione sul Software Didattico (ITD-CNR)
e distribuito secondo Creative Commons Attribution-NoDerivs 2.5 License