Sei sulla pagina 1di 6

Esercizi di Calcolo Numerico in MATLAB

Massimo Frittelli

30 aprile 2020
2
Prima di cominciare

Questa breve raccolta di esercizi è pensata per essere svolta nell’ordine in cui è
presentata, in quanto gli esercizi sono disposti in ordine crescente di difficoltà
ed ogni esercizio è in qualche modo propedeutico ai successivi. Anche quando
un esercizio fosse una modifica o un’estensione del precedente, consiglio di
tenere comunque ciascun esercizio in un file .m a se stante, in modo da
mantenere traccia dei progressi compiuti.
Come è noto al lettore, due tipi fondamentali di programmi MATLAB
sono gli script e le function, ciascuno più o meno indicato in determinati
casi. Un vantaggio degli script da tenere in conto è che tutte le variabi-
li prodotte nella computazione sono globali, e pertanto sono accessibili nel
Workspace dopo la terminazione del programma, il che costituisce un utile
strumento di debug. Dunque, se si vuole produrre una function, consiglio
di sviluppare il codice prima in forma di script in modo da facilitarne il
debug, per poi convertirlo in function quando il risultato è soddisfacente.
Per consultare la documentazione di una qualunque funzione built-in,
ad esempio della funzione rand, basta lanciare il comando help rand dalla
Command Window.

3
4
Esercizi

1. Creare uno script che crea un vettore riga vec contenente tutti gli
interi da 1 a 100 in ordine crescente.

2. Modificare lo script dell’esercizio 1 in modo che vec contenga tutti gli


interi da 1 a N, dove N è una variabile intera definita all’interno dello
stesso script. Provare diversi valori di N.

3. Modificare lo script dell’esercizio 2 aggiungendo un nuovo vettore co-


lonna one sempre di lunghezza N, ma i cui elementi sono tutti uguali a
1. Suggerimento: può tornare utile la funzione ones.

4. Modificare lo script dell’esercizio 3 calcolando il prodotto scalare (uti-


lizzando solo operazioni built-in fra matrici) tra vec e one e inserendo
il risultato in una variabile numerica result. Cosa stiamo calcolando
in realtà?

5. Modificare lo script dell’esercizio 3 calcolando i due prodotti matri-


ciali vec * one e one * vec e inserendo i rispettivi risultati in due
variabili prod1 e prod2, rispettivamente. Perchè prod1 e prod2 hanno
dimensione diversa?

6. Creare una function chiamata inner che prende in input due vettori
della stessa lunghezza (non importa se riga o colonna) vec1 e vec2 e
restituisce in output il loro prodotto scalare, calcolato con un ciclo for.

7. Modificare la function dell’esercizio 6 usando un ciclo while anziché


un ciclo for.

8. Modificare la function dell’esercizio 6 aggiungendo un controllo preli-


minare sulla correttezza degli input: se vec1 e vec2 non hanno la stes-
sa lunghezza, la function deve stampare il seguente messaggio nella
Command Window: “Errore: i due input non sono vettori della stessa

5
6

lunghezza”. Suggerimento: per stampare il messaggio, usare la funzio-


ne disp. Per la lunghezza di un vettore, può tornare utile la funzione
length, vedere la documentazione se necessario.

9. Scrivere una function chiamata matprod che prende in input due ma-
trici mat1 e mat2 di dimensioni opportune e restituisce in output il
prodotto matriciale mat1 * mat2, calcolato con un triplo ciclo for.

10. Modificare la function dell’esercizio 9 utilizzando un triplo ciclo while


anziché un triplo ciclo for.

11. Modificare la function dell’esercizio 9 aggiungendo un controllo pre-


liminare sulla compatibilità delle dimensioni delle matrici in input. In
caso di dimensioni non compatibili, la function deve stampare il se-
guente messaggio: “Errore: le matrici in input non hanno dimensioni
compatibili”. Suggerimento: per le dimensioni di una matrice usare la
funzione size.

Potrebbero piacerti anche