Impiego di script MATLAB per definire funzioni matematiche (non solo numeriche ma anche simboliche)
Schema della sezione
-
Specifica MATLAB di funzioni matematiche per il calcolo numerico e/o simbolico. (17 ott. 2022, Aula 3A edif. H2bis, h.14--17), Omodeo da remoto
Gli script visti in precedenza,
- per la rappresentazione di numeri naturali in diverse basi,
- per il calcolo del MCD,
vengono rivisitati e implementati come M-funzioni dotate di parametri.
Motivante per il punto successivo. Sottomettere a Matlab il comando: figure, plot(0:100,sqrt(0:100)), hold on, plot(0:100,floor(sqrt(0:100)))
Seguono esercizi: realizzare M-funzioni per:
- estrarre la radice quadrata intera, calcolata per difetto, di un numero intero (nei tre modi proposti nell'ultima diapositiva della presentazione CenniIntroduttiviSuMatlab2022.pdf);
- per estrarre casualmente una cinquina del gioco del lotto;
- stabilire la probabilità di indovinare una terna/quaterna/cinquina al lotto, impiegando il calcolo del coefficiente binomiale.
-
Aumenta la flessibilità di impiego (ad esempio posso ottenere anche la conversione in base 5 o in base 12) rispetto allo script visto in precedenza e riportato sotto la data 4 ottobre, anche se ora---metaforicamente parlando---abbiamo un motore senza la carrozzeria. Non vengono effettuate letture né stampe (in questo senso, ora manca l'interfaccia con l'utente del metodo). L'impiego della function mcd(X,Y) specificata nel file mcd.m, avviene esclusivamente tramite il passaggio di parametri.
-
Confrontare con lo stesso procedimento di calcolo realizzato come script "a palla di fango" (cioè privo di parametri e interfacciato in modo rigido con l'utente) riportato sotto la data 4 ottobre.
-
Il metodo più sbrigativo ricorre semplicemente alle due funzioni predefinite in MATLAB:
- sqrt(X) che estrae la radice quadrata di un numero (anche reale) X, producendo come risultato (a seconda del valore del parametro) un numero intero, reale o complesso;
- floor(X) che taglia via la parte decimale di un numero reale fornitogli come valore del parametro X, producendo come risultato la sua parte intera.
Per collaudare il metodo `radQuad` qui proposto, consiglio di utilizzare il comando
plot(0:100,(sqrt(0:100)),'Linewidth',2), hold on, plot(0:100,radQuad(0:100),'Linewidth',2)
-
Un metodo più artigianale del precedente, calcola i quadrati perfetti consecutivi, fino a raggiungere o superare il valore del parametro. Se lo raggiunge con precisione, ci restituisce la base dell'ultimo quadrato; altrimenti arretra di un'unità.
-
Questo terzo metodo nella sostanza procede come il secondo: genera in successione i quadrati perfetti fino a raggiungere o superare il valore del parametro. Se ha superato il traguardo arretra di uno. L'aspetto nuovo è che i quadrati vengono calcolati senza moltiplicazioni, sommando i numeri dispari: 0+1=1, 1+3 = 4, 4+5 = 9, 9+7 = 16 e cosí via.