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

Maxima (con Xmaxima)
Algoritmo delle divisioni successive per il calcolo del massimo comun divisore tra due interi a e b non nulli
a cura di:
Milla Lacchini
Parole chiave: algoritmi, analisi numerica, calcolo algebrico, MCD, 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".

freccia verde

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

Interpolazione statistica

Maxima consente di introdurre i primi elementi di programmazione implementando semplici algoritmi , ad esempio per il calcolo dell'MCD.

L'algoritmo di Euclide delle divisioni successive considera il resto della divisione intera di a per b.

Sia q il quoziente intero della divisione di a per b e sia r = a - b q cioè r=a Modulo b

- Se r=0 allora il M.C.D. è b

- altrimenti si sostituisce a con b , b con r e si ripete il procedimento.

Utilizziamo la funzione DIVIDE(a,b) che effettua la divisione di a per b e restituisce una lista in cui il primo elemento è il quoziente intero, il secondo è il resto; per estrarre il resto dalla lista si utilizza la funzione PART.

(C1)

mcd(a,b):=block([r], do (r:part(DIVIDE(a,b),2), if r=0 then return(b) else (a:b, b:r) ) )$


(C2)

mcd(4,6);

(D2) 2

Maxima supporta la programmazione ricorsiva:

(C3)

mcd(a,b):=if (part(DIVIDE(a,b),2)=0) then b else mcd(b,part(DIVIDE(a,b),2))$

(C4)

mcd(4,6);

(D4) 2

Modifichiamo l'algoritmo in modo che il resto venga calcolato una volta sola:

(C5)

mcd(a,b):=block([r], r:part(DIVIDE(a,b),2), if r=0 then return(b) else return(mcd(b,r)))$

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