Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
18 ottobre 2000
Indice
1 Elementi Fondamentali 1
1.1 Cosa è MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Come avviare MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Immissione di dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3.1 Ingresso da tastiera . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3.2 Caricamento e salvataggio dati su file . . . . . . . . . . . . . . . . 4
1.4 Comandi utili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3 Operazioni 10
3.1 Calcoli Elementari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2 Variabili predefinite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3 Funzioni elementari e trascendenti . . . . . . . . . . . . . . . . . . . . . . 12
3.4 Funzioni su matrici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.4.1 Funzioni di algebra lineare . . . . . . . . . . . . . . . . . . . . . . 14
3.4.2 Funzioni di ordinamento . . . . . . . . . . . . . . . . . . . . . . . 15
3.5 Operazioni Logiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4 Programmare in Matlab 20
4.1 Strutture di Programmazione . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.1.1 Sequenze di comandi . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.1.2 Istruzione di selezione . . . . . . . . . . . . . . . . . . . . . . . . 21
4.1.3 Istruzioni iterative . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.2 Funzioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
i
Capitolo 1
Elementi Fondamentali
1
1.2. COME AVVIARE MATLAB
nel caso si disponga di windows o del Macintosh, basta cliccare due volte sull’icona
del matlab.
Una volta avviato il programma compare il prompt che ci richiede i comandi. Per uscire
basta scrivere quit. Su windows è anche possibile scegliere uscita dal menu file o premere
ALT + F4.
3. come risultato dell’invocazione di funzioni interne del matlab (esempio inversa di una
matrice);
A = -4
Enter
comporterà la creazione di una variabile scalare inizializzata al valore -4.
Per rimuovere dalla memoria tale variabile basterà dare il comando clear A. Volendo
immettere un vettore riga basterà immettere i dati che lo compongono separandoli con spazi
o con “,’.
2
1.3. IMMISSIONE DI DATI
R = [1 0 -4 3] Enter
oppure R = [1, 0, -4, 3] Enter
Quando si immette una matrice occorre potere andare a capo; ciò viene realizzato andando
con il carattere “;” o andando a capo con Enter .
Esempio 2 Supponiamo di voler immettere l’identità di ordine 3. Questo può essere fatto
con una la sintassi seguente:
A = [1, 0, 0; 0, 1, 0; 0, 0, 1]
o equivalentemente:
A = [1, 0, 0 Enter
0, 1, 0 Enter
0, 0, 1] Enter
Naturalmente i dati di ciascuna riga possono anche essere separati da spazi anzichè da “,”.
Utilissimo è l’operatore di trasposizione, realizzato con il carattere ’ (apice).
Esempio 3 Immettendo l’assegnamento:
A = [1;2;-1]’
si ottiene di memorizzare in A la colonna:
In tutte gli assegnamenti mostrati fino ad ora, il risultato viene comunque mostrato sullo
schermo. Cio’ puo’ essere tediose l’array e’ molto lungo (ad esempio 500x500). Per evitare
di mostrare sullo schermo il risultato di un asegnamento o piu’ in generale della valutazione
di un’espressione, occorre concludere l’espressione con “;”.
Esempio 4 La funzione predefinita eye(n) restituisce la matrice identità di dimensioni
uguali al parametro n. Per porre la matrice A uguale all’identità di ordine 500, senza
visualizzare il risultato, basterà scrivere:
A = eye(500); Enter
Per scrivere un vettore riga molto lungo è possibile utilizzare i tre punti per andare a
capo:
Esempio 5 Il vettore:
A = [1 4 5 6 7 8 12 11 343 10] Enter
può anche essere immesso come:
A = [1 4 5 6 7 8 12 ... Enter
11 343 10] Enter
3
1.4. COMANDI UTILI
1 0 0
0 1 0
0 0 1
eseguendo:
load iden.dat
verrà creata una variabile di nome “iden” uguale alla matrice identità di ordine tre.
Esempio 7 Supponendo di voler salvare le variabili A e B nel file varAB occorre dare il
comando:
save varAB A B
I comandi save e load operano sui file in formato binario contraddistinti dall’estensione
“mat”. Per ottenere file testo eventualmente leggibili da altri programmi occorre utilizzare
l’opzione “-ascii”. L’esempio precedente, volendo ottenere un file testo, diviene:
save -ascii varAB A B.
4
1.4. COMANDI UTILI
Esempio 8 Se si vuole conoscere il significato della funzione sin basta digitare help
sin. Se si batte invece help elfun viene presentata una lista di funzioni matematica
elementari.
Una caratteristica molto comoda è di poter utilizzare i tasti cursore, freccia in lato e
freccia in basso, per riguardare ed eventualmente reimpostare i comandi dati. scrivendo
lettere prima di battere i tasti cursore è eventualmente possibile rivedere tutti i comandi dati
che iniziano per quelle lettere.
Il comando clc consente di cancellare il contenuto dello schermo.
Esistono poi una serie di comandi simili al DOS utili per la gestione di programmi e fun-
zioni. cd consente di cambiare la directory di lavoro corrente. type nomeFile stampa il
contenuto di nomeFile.M e dir elenca i file presenti nella directory attuale. Molto utile è il
comando path che elenca le directory nelle quali verranno cercate funzioni e programmi.
Molto utili sono, infine, i comandi who e whos che forniscono rispettivamente un elenco
delle variabili utilizzate e delle variabili utilizzate con la relativa dimensione.
5
Capitolo 2
In questo capitolo vedremo una prima rassegna di esempi su come si opera con le matrici.
Possono essere utili, nel seguito, tre funzioni per la creazione automatica di matrici:
eye(m,n) crea una matrice a m righe ed n colonne che ha 1 sulla diagonale principale e
zero altrove.
zeros(m,n) crea una matrice fatta di m righe ed n colonne i cui elementi sono tutti uguali
a zero.
ones(m,n) crea una matrice di m righe ed n colonne i cui elementi sono ovviamenti tutti
uguali a 1.
diag tale funzione ha due modalità di funzionamento. Se l’elemento che si passa come
parametro è un vettore, si crea una matrice diagonale avente sulla diagonale gli ele-
menti del vettore. Se, viceversa, l’argomento è una matrice, viene restituita un vettore
avente come elementi la diagonale della matrice.
!
6
2.2. UTILIZZO DELL’OPERATORE “:”
"
Esempio 10 Sia A = [1 2; -2 0], B = [0 9;-2 3]. Ponendo C = [A zeros(2,2);
eye(2) B] si ottiene:
#
Può essere importante sapere che la variabile di sistema ans contiene sempre il risultato
dell’ultima operazione effettuata.
Esempio 11 Scrivendo:
A = 2:4 Enter si ottiene: A = [2 3 4]. Se invece si scrive:
A = 2:0.5:4 Enter
si ottiene: A = [2 2.5 3 3.5 4].
Gli intervalli possone anche essere ottenuti tramite la funzione linspace che specifica
tuttavia il numero di punti anzichè l’ampiezza dello step. La sintassi è
linspace(valoreIniziale, valereFinale, NumeroPunti) In caso di
omissione del terzo parametro, viene assunto un valore di default pari a 100.
Esempio 12 Gli intervalli di cui nell’esempio precedente possono essere ottenuti rispettiva-
mente con: A = linspace(2,4,3) Enter e con A = linspace(2,4,5) Enter
Esempio 13 Calcolare nell’intervallo chiuso $ % , con uno step sulle ascisse pari a 0.1,
punti equamente spaziati della seguente funzione:
7
2.3. MANIPOLAZIONE DI MATRICI
A questo punto calcoliamo i punti corrispondenti in y considerando che lo step è anche per
le y pari a 0.1 (coefficiente angolare uguale a 1).
y1 = 0:0.1:2
A questo punto facciamo lo stesso anche per l’intervallo tra 0 e 2 producendo due vettori x2,
e y2. Alla fine possiamo fondere il risultato in un;unica matrice: ris = [x1 y1; x2
y2] Enter
Esempio 15 Consideriamo la matrice di cui all’esempio precedente. Poniamo:
i =[1 3]; Enter
j = 3:-1:2; Enter
B = A(i,j); Enter
Il risultato che si ottiene è:
5 6 7
MATLAB consente anche di rimuovere elementi appartenenti ad un vettore riga o ad un
vettore colonna. Questo può essere fatto ponendo l’elemento in questione uguale a “[]”.
Esempio 16 Effettuiamo la seguente successione di operazioni:
b = [1 2 3 4 5]; Enter
c = [1;2;3;4;5]; Enter
b(2) = []; Enter
c(3) = []; Enter
8
2.3. MANIPOLAZIONE DI MATRICI
6
L’operazione di soppressione di un elemento non ha senso all’interno di una matrice. Ad
esempio se A è una matrice 2x2, porre A(1,2) = [] produrrà un messaggio di errore.
Nell’ambito di una matrice è, tuttavia, possibile eliminare un’intera colonna o un’intera ri-
ga; questo viene effettuato semplicemente ponendo A(intervallo-riga, numero-
colonna) = [] o A(numero-riga, intervallo-colonna) =[].
si ottiene:
?
#
9
Capitolo 3
Operazioni
Fino a questo momento abbiamo visto come immettere e manipolare matrici. In questo
capitolo e nei successivi vedremo come elaborare dati e mostrare, anche graficamente, i
risultati.
10
3.1. CALCOLI ELEMENTARI
la prima darà errore in quanto la matrice A è di dimensioni 2x2 mentre CxB è di dimensioni
C
?
3x3, mentre la seconda darà il risultato:
B
A. @
Esempio 19 Supponiamo di voler trovare le soluzioni del seguente sistema:
G6 (-(EFHD * # (-(EFD
8
8 (3.1)
I e la soluzione, se la matrice risulta essere
I
invertibile, è data da
Il sistema può essere posto<
J D . In MATLAB la cosa può essere impostata come segue:
nella forma:
Si noti come l’ultima operazione potesse essere anche impostata come x = inv(A)*b.
Ci sono un pó di cose a cui stare attenti. Ad esempio l’operatore prodotto “*” funziona
su scalari e vettori; su questi ultimi ha il significato di prodotto interno o prodotto scalare.
Se si vuole creare un vettore i cui elementi siano invece pari al prodotto degli elementi omo-
loghi di due vettori (prodotto di SCHUR) l’operatore da utilizzare è il “.*”. Analgogamente
all’operatore “.*”, troviamo l’operatore “./” per la divisione tra i vari elementi di un vettore
e “.ˆ’’ per l’elevamento a potenza.
9
7
A. @
.
11
3.2. VARIABILI PREDEFINITE
Notiamo che gli operatori “.ˆ”, “.*” e “./” si possono applicare anche con uno dei due
operandi scalare.
Esempio 21 Supponiamo di porre:
u = [1 2 3]; Enter
N
7 %
7 7
7
Se effettuiamo 2./u avremo come risultato;
A. @ K
ML > . L’operazione
porterà, invece, al risultato #0 . Infine u.2 darà come risultato: O
P
Q
0
# S
R
u.*3
.E@ .
MATLAB consente anche di sommare e sottrarre matrici per scalari. Lo scalare viene
interpretato in questo caso come una matrice avente tutti gli elementi pari allo scalare stesso.
Lo stesso vale anche per operatori di relazione, come vedremo meglio più avanti.
pi valore del . T
Inf infinito
12
3.3. FUNZIONI ELEMENTARI E TRASCENDENTI
Esempio 22 Consideriamo i due numeri 1.4, -5.7. Vediamo come funzionano le funzioni di
arrotondamento.
Numero round fix floor ceil
1.4 1 1 1 2
-5.7 -6 -5 -6 -5
Molto importante è la funzione rem(x,y) che restituisce il resto di una divisione intera.
Le funzioni lcm e gcd restituiscono il mimimo comune multiplo ed il massimo comune di-
visore di un vettore, passato come argomento. La funzione abs restituisce il valore assoluto
dell’argomento. Esistono poi una serie di altre funzioni matematiche. In particolare:
funzioni trigonometriche: sin (seno), cos (coseno), tan (tangente), asin (arcose-
no), acos (arcocoseno), atan (arcotangente) ecc.
Tutte le funzioni presentate possono agire su uno scalare o su un vettore. Nel secondo caso si
intendono applicate a ciascun elemento del vettore stesso e producono,generalmente, un ulte-
riore vettore di cui ciascuna componente è data dall’applicazione della funzione all’elemento
omologo del vettore passato come argomento.
Esempio 23 Si vuole produrre una tabella che dia le coppie ordinate (t, U V W@ ,/.YX[Z]\ U ), per
t variabile tra 0 e 10 con step di 0.1. Il procedimento è il seguente:
t = 0:0.1:10; Enter
y = abs(2 - 3 * sin(t)); Enter
ris = [t’ y’]; Enter
Con la prima istruzione viene creato un vettore riga con i valori di t, con la seconda si
calcolano i valori della funzione per ogni punto, la terza istruzione compone i risultati in
una tabella.
13
3.4. FUNZIONI SU MATRICI
tuttavia ciò sarebbe un errore dal momento che si moltiplicherebbero due verrori riga, una
composto dai valori di t e l’altro dai valori di sin(t). Moltiplicare, invece, t * sin(t)’
porta ad un valore scalare. La cosa corretta da fare è invece moltiplicare elemento per
elemento:
y = t.*sin(t);
Alla fine, volendo, possiamo comporre tutti i risultati in un’unica tabella:
ris = [t’ y’];
L’operatore “.ˆ” permette di elevare al quadrato tutti gli elementi del vettore riga x ottenedo
un nuovo vettore; analogamente l’operatore “./” consente di calcolare il reciproco di tutti
gli elementi del vettore.
Per ottenere lo spazio nullo, o ker(A), di una matrice, cioè lo spazio costituito dai vettori
( tali che
( , si può utilizzare il comando null(A)
iLa decomposizione spettrale di una matrice A, consiste nel trovare una matrice diagonale
14
3.4. FUNZIONI SU MATRICI
la chiamata [U, L] = eig(A); Enter . Notiamo che questa funzione restituisce più
valori che possono essere raccolte in diverse variabili.
La funzione sum applicata ad un vettore restituisce la somma degli elementi; applicata
ad una matrice restituisce un vettore riga i cui elementi sono le somme degli elementi di
O
C
ciascuna colonna della matrice. Ad esempio se A = [1 3; 9 -1], sum(A) restituisce
.E@ .
15
3.4. FUNZIONI SU MATRICI
[Y, I] = max(A)
In Y verrà restituito un vettore composto dei massimi elementi di ciascuna colonna, in I il
valore degli indici in ciascuna colonna in corrispondenza dei quali si ha il massimo. Se non
si è interessati nel conoscere la posizione si può anche ignorare il secondo valore restituito,
ponendo: y = max(A).
Esempio 29 Il massimo elemento di una matrice può essere trovato facilmente tramite max(max(A));
il max più interno genera un vettore con i massimi delle varie colonne che viene passato co-
me argomento al max più esterno che calcola il massimo in assoluto. Se si è interessati
anche alla posizione che tale massimo ha all’interno della matrice si può procedere come
segue:
[m1, i1] = max(A); Enter
[m, k] = max(m1); Enter
h = i1(k); Enter
Il primo assegnamento crea due vettori; m1 che contiene i massimi delle varie colonne e i1
che contiene le righe in cui ciascun massimo, nell’ordine di va a collocare. Il secondo as-
segnamento individua il massimo e inserisce la colonna in k. Il terzo assegnamento preleva
in h l’indice di riga relativo al massimo della colonna k-ma. In definitiva avremo in m il
massimo e la sua posizione sarà data dalla coppia h, k.
16
3.5. OPERAZIONI LOGICHE
Operatore Sgnificato
;
maggiore
maggiore o uguale
minore
minore o uguale
== uguale
˜= diverso
Tali operatori possono restituire il valore falso, associato al numero 0, o vero associato al
numero 1. Inoltre esistono i normali operatori logici & (and), | (or), ˜ (not).
u ?
v> #6
Esempio 31 Sia
Se impostiamo
P = (A >5) Enter
w
Otteremo una matrice con zero in corrispondenza degli elementi di A per i quali la condizio-
ne è verificata e 1 altrimenti. Cioè:
u
x
Esempio 32 Sia data una matrice A fatta di interi. Come si fa a sapere il numero di elementi
pari e minori di un valore fissato in b? Se si imposta:
P = (A<b) & (rem(A,2)==0;
Avremo, in P, tanti elementi quante le posizioni di A, gli elementi di P saranno 0 se l’elemento
omologo di A verifica la condizione, 1 altrimenti. A questo punto basta fare
sum(sum(P))
per avere il numero di elementi pari ad 1 di P.
Un altro operatore interessante è any; applicato su un vettore mi dice se esiste almeno un
elemento del vettore diverso da zero. Applicato su una matrice mi da il risultato suddetto
per ogni colonna; in sostanza mi viene resatituito un vettore riga i cui elementi sono uguali
a 1 se nella colonna omologa abbiamo almeno un valore diverso da zero e uno altrimenti.
L’operatore duale è all che invece richiede che tutti gli elementi di un vettore siano diversi
da zero, per dare uno occorre che tutti gli elementi siano maggiori di zero.
Esempio 33 Per dire se nella matrice A c’è almeno un elemento maggiore di zero basta
scrivere any(any(A>0)) Per verificare, ad esempio che tutti gli elementi siano minori ¡
o uguali a zero, occorre impartire il comando:
all(all(A<=0))
Cosa succede se imposto any(all(A<=0))?
17
3.5. OPERAZIONI LOGICHE
L’operatore logico più completo è il find; applicato ad un vettore restituisce tutti gli indici
per i quali gli elementi sono non nulli. Applicando find ad una matrice, si avranno invece
le coppie di indici associati ad elementi non nulli.
Si osservi, ancora una volta, che l’utilità di questi operatori deriva dal fatto che si possa
codificare con zero una condizione falsa e con uno una codizione verificata.
Esempio 35 Stampare da uno a 30 tutti i numeri che non siano multipli di 2 e tutti i multipli
di sette. La prima cosa da fare è generare l’intervallo interessante:
t = 1:30; Enter
A questo punto individuiamo le posizioni associate a tutti i numeri di nostro interesse:
i = find(rem(t,2)==0 | rem(t,7)==0); Enter
Esempio 36 Un modo molto utile per stimare la posizione degli zeri di una funzione è dato
dal valutare i punti per i quali risulta:
18
3.5. OPERAZIONI LOGICHE
Infine restituaimo i t interessati:
t(i) Enter
19
Capitolo 4
Programmare in Matlab
Queste due distinte necessità danno origine a due modalità di utilizzo dello strumento: gli
script file e le funzioni. Sia uno script file che una funzione sono espresse da un file di testo
scritto, ad esempio, tramite il notepad o l’edit del DOS1 . In entrambi i casi occorre che il
file venga salvato con un’estensione “.M” e che sia presente nel path visibile al MATLAB.
In una prima fase lo studente può esercitarsi ponendo i propri file e funzioni all’interno
della directory corrente. Successivamente, volendo salvare in directory distinte, è possibile
aggiungere tali directory al PATH nei quali il MATLAB va a cercare, tramite addpath (il
path potrà essere editato o variato, con rmpath ed editpath.
Nel seguito illustreremo rapidamente alcuni costrutti di programmazione utilizzandoli
all’interno di file script. In fondo al capitolo, parleremo, invece, di funzioni. Per una cor-
retta comprensione del seguito, si tenga presente che scrivere uno script equivale, ne più e
ne meno, ad inserire una sequenza di comandi da tastiera. Per questo motivo, le variabi-
li del workspace, cioè quelle create nello spazio di lavoro dell’utente durante una sessione
MATLAB, vengono viste da uno script file e possono essere modificate. Inoltre eventuali
variabili create nello script sopravvivono all’esecuzione dello script. Da notare che tutto ciò
che segue il caratere “linea, è considerato commento e, pertanto, non incide sul codice.
20
4.1. STRUTTURE DI PROGRAMMAZIONE
} ,~ )o
. oW } , ~ o
Esempio 37 Proviamo a scrivere il seguente script tramite un editor o il menù
.
A = eye(3);
B = ones(3,3)+diag([3,2,1]);
C = A’+B’;
Salviamo il file nella direcotry corrente con il nome di “prova”. A questo punto eseguiamo
la seguente sequenza di istruzioni nell’ambiente MATLAB:
A = 1; Enter
prova; Enter
A Enter
B Enter
C Enter
Alla fine si noterà che A avrà modificato il suo valore e saranno state create le variabili
B e C.
if condizione,
istruzioni
elseif condizione,
istruzioni
else
istruzioni
end
Esempio 38 Data la matrice A definita nel workspace, scrivere uno script che se la matrice
è quadrata ne stampi a schermo il determinante e caratteristica; se invece è rettangolare lo
script dovrebbe notificare la cosa e stampare la caratteristica. Notiamo che una stringa può
essere stampata con la sintassi:fprintf(1, ’stringa’).
Lo script può essere fatto come segue:
21
4.1. STRUTTURE DI PROGRAMMAZIONE
y
Esempio 39 Approssimare l’esponenziale f (t) = exp(t) con i primi 3 elementi ele-
menti della serie di Taylor, . Con riferimento ad un intervallo contenuto nel vettore x cal-
colare il massimo errore che si commette nell’approssimazione e l’errore quadratico medio,
$ y
y F
definito come:
DX \
dove y e
y sono i campioni della funzione e della funzione approssimante. Comunicare
se il l’errore che si commette è inferiore all’uno percento del minimo valore assunto dalla
funzione. Lo script può essere il seguente:
N = max(size(x));
f = exp(x);
ftilde = 1+ x + (x.ˆ2)/2;
e = 1/N* sqrt((f-ftilde)*(f-ftilde)’);
fprintf(1, ’errore quadratico medio...’);
e
if e> 0.01*min(f),
fprintf(1,’errore troppo grande’);
end
for indice =
intervallo
istruzioni
end
22
4.1. STRUTTURE DI PROGRAMMAZIONE
while condizione,
istruzioni
end
Tali strutture sono purtroppo molto lente da eseguire e dovrebbero essere utilizzate solo
quando le funzioni di manipolazione di matrici non possono essere utilizzate.
Esempio 40 Dato un intervallo di valori, contenuto nel vettore riga x, dato un intero N
positivo, dare la seguente stima della funzione sin x:
J D F D
@W,S.!( X \ r X ( .rC* \gt
La prima cosa che si può osservare è che se J
r
n-1 termini dello sviluppo, si ha:
@ r e
D [
X
( \ è la funzione ottenuta considerando
J
F J DS D
@ r Xz(\ @ r J DXz(\*X \ r D * X X(. |r \A * \ft
Inoltre si può esservare che, ponendo y
, si ha y y J .
X .* \gt
Sfruttando queste considerazioni il problema r può essere risolto tramiter lo script seguente:
X .* \ . r D
y = zeros(size(x));
intervallo = 1:N-1;
f = 1;
s = x;
for i = intervallo,
%implenta f(n)= (2n+1) 2n f(n-1)
f = f*(2*i+1)*(2*i);
%implementa s(n) = s(n-1) +xˆ(2(n-1)+1)/((2(n-1)+1)!)
%ponendo i = n-1
s = s + ((-1)ˆi) *(x.ˆ(2*i+1))./((work));
end;
23
4.2. FUNZIONI
primi = 2:N;
i = 2;
while i < N,
cancella = find(rem(intervallo,i)==0);
cancella(1) = [];
primi(cancella) = [];
i = i+1;
end
primi
4.2 Funzioni
Le funzioni si differenziano dagli script per poche cose. Intanto le funzioni vengono dotate,
in cima, di un’intestazione che deve essere:
function [variabili di uscita] = nomeFunzione(variabili di in-
gresso).
La prima cosa che possiamo osservare è che la funzione accetta parametri di ingresso e può
restituire parametri di uscita. Inoltre, eventuali commenti, inseriti subito dopo l’intestazione,
verranno stampati digitando help nomeFunzione. Perchè la funzione possa essere in-
vocata essa deve essere salvata in un ile avente il suo nome, collocato nella directory corrente
o in una directory raggiungibile tramite path
function y = funzione(x)
y = sin(x)./x;
Notiamo come la restituzione del valore da parte della funzione sia quello conseguente
all’ultimo assegnamento della variabile che ha come nome quello specificato come variabile
di uscita (in questo caso y). Il file che conterrà la funzione verrà denominato funzione.m.
24
4.2. FUNZIONI
Esempio 44 Vogliamo una funzione che, dato lo sviluppo in serie del seno, passandogli un
intervallo e una precisione desiderata, intesa in termini di rapporto errore massimo/media
del valore assoluto del seno nell’intervallo, resituisca il numero di elementi necessari allo
sviluppo in serie e la precisione ottenuta. L’esercizio si risolve con la semplice funzione:
25
4.2. FUNZIONI
Se v è il vettore, per quello che riguarda il primo punto si può tranquillamente procedere
con l’istruzione sum(v>5). Per quello che riguarda il secondo punto si utilizza il find per
individuare gli elementi da eliminare e, successivamente, si pongono tali elementi a “[]”.
Complessivamente il risultato è la seguente funzione.
26