Manuale - Matlab 6.5 Italiano
Manuale - Matlab 6.5 Italiano
Manuale - Matlab 6.5 Italiano
Tutorial di Matlab
Aggiungendo un nuovo direttorio alla lista dei direttori Matlab ricerca i file funzione o di
script anche in quel direttorio. È buona norma evitare di salvare i propri file nel direttorio di
default \Work al fine di mantenere distinti i singoli progetti ed argomenti di ricerca.
N.B.: quando si inizia a risolvere un nuovo problema è buona norma cancellare tutte le
variabili presenti nel Workspace per evitare inutili errori di riutilizzo o sovrapposizione di
variabili già definite precedentemente.
7 7
6.8 6.8
6.6 6.6
6.4 6.4
6.2 6.2
6 6
5.8 5.8
5.6 5.6
5.4 5.4
5.2 5.2
5 5
1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3 1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3
fplot('tanh',[-2 2])
8 1
7.5 0.8
7 0.6
6.5 0.4
6 0.2
5.5 0
5 -0.2
4.5 -0.4
4 -0.6
3.5 -0.8
3 -1
5 5.5 6 6.5 7 7.5 8 8.5 9 9.5 10 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2
2.5
€
1.5
1
0 5 10 15 20 25 30 35
anni
Vedi anche:
Demos
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
-3 -2 -1 0 1 2 3
pi pigreco
elseif x == 0 s = s + 1./k; x = x + 2;
y = 0; end end
else disp(x)
y = NaN;
...
end
switch d switch z
otherwise otherwise
end end
fclose(unit);
Utilizzando i comandi fwrite e fread è anche possibile scrivere, ‘w’, o leggere, ‘r’,
su o da file binari.
Infatti, anche se Matlab perdona l’utente sbadato, non altrettanto avviene in altri linguaggi
di programmazione quali il Fortran o il C++.
Programmando in Fortran ad esempio: 1/4 = 0 in quanto la divisione viene eseguita tra
due cifre intere ed il risultato è automaticamente posto uguale ad un intero.
Attenzione quindi: Pr^(1/3) = 1. qualsiasi sia il valore di Pr.
/ oppure ./
^ oppure .^
Viceversa gli operatori: .*, ./, .^ operano a livello vettoriale–matriciale sui singoli elementi
dei vettori o matrici.
Per effettuare un prodotto tra matrici in senso classico (prodotto righe per colonne) si
utilizza l’istruzione: C = A * B;
N.B.: Per evitare ambiguità tra l’utilizzo del punto come separatore decimale oppure come
operatore congiunto ai simboli: *, /, ^ è opportuno mantenere gli operatori: .*, ./, .^ ben
separati dalle variabili sulle quali essi operano. Esempio: 1. / 4. * pi * a ^ 2
N.B.: elevando a potenza intera non si deve aggiungere il punto. Esempio: a^2, b^5
Domanda: come produrre dei punti equispaziati secondo n intervalli comprendendo gli
estremi?
Algoritmo corretto:
delta = (xUp – xLow) / nIntervalli;
for i = 1: nIntervalli + 1
next i
Il seguente algoritmo è meno corretto in quanto accumula gli errori di troncamento legati
all’operazione di somma. I termini x(i) sono cioè meno precisi.
x(1) = xLow;
for i = 1, nIntervalli
next i
Domanda: come produrre n punti equispaziati che comprendano anche gli estremi di un
intervallo?
Algoritmo:
delta = (xUp – xLow) / (nPunti – 1);
for i = 1: nPunti
next i
Esempio: data la serie armonica (somma degli inversi dei numeri naturali) per sapere
quanti termini sono necessari prima di raggiungere almeno il valore 5 si scriverà:
n = 0;
somma = 0.;
n = n + 1;
somma = somma + 1. / n;
end
disp([‘ n = ’, num2str(n)]);
in quanto il problema chiede chiaramente: “prima di raggiungere almeno il valore 5”. Ciò
sta a significare che il ciclo while deve terminare non appena è stato raggiunto o superato
il valore 5. Supponiamo, cosa non vera, che la somma dei primi 83 reciproci dei numeri
naturali conducesse esattamente al valore 5. Se si utilizzasse l’istruzione:
while somma <= 5.
la procedura while sarebbe autorizzata a iterare ancora una volta per sommare il termine
84-esimo che quindi andrebbe oltre il valore 5 richiesto dal problema.
Esempio:
A = zeros(3,5)
nRows = size(A,1);
nCols = size(A,2);
disp(['nRows = ',num2str(nRows),' nCols = ',num2str(nCols)]);
Output:
A =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
nRows = 3 nCols = 5
Esempio:
A = zeros(3,5);
nRowsCols = size(A)
nDimensions = length(nRowsCols)
Output:
nRowsCols =
3 5
nDimensions =
Salvando il file nel direttorio riportato da Matlab™ tramite il comando pwd sarà poi possibile
eseguirlo dalla linea di comando digitando il solo nome del file stesso.
Esempio:
>> pwd
ans =
X:\MATLAB6.5\work
Se si crea un nuovo file e lo si salva con il nome: prova.m, sarà sufficiente lanciare il
comando: prova per eseguirlo.
Se si vuole cambiare direttorio dove salvare e far eseguire i file di Matlab™ è possibile
utilizzare il comando chdir nomedir. Esempio: chdir c:\myfiles\ese1\
Esempio:
subplot(2,2,1); % 4 diagrammi (2 x 2), punto al #1
plot(x1,y1),title ‘diagramma 1';
subplot(2,2,2); % punto al #2
plot(x2,y2),title ‘diagramma 2';
subplot(2,2,3); % punto al #3
plot(x3,y3),title ‘diagramma 3';
subplot(2,2,4); % punto al #4
plot(x4,y4),title ‘diagramma 4';
Esempio:
x = [-5.8, -3.2, -2.5, 0., 0.5, 2.1, 3.9]
fixX = fix(x)
roundX = round(x)
floorX = floor(x)
ceilX = ceil(x)
Output:
x = -5.8000 -3.2000 -2.5000 0 0.5000 2.1000 3.9000
fixX = -5 -3 -2 0 0 2 3
roundX = -6 -3 -3 0 1 2 4
floorX = -6 -4 -3 0 0 2 3
ceilX = -5 -3 -2 0 1 3 4
Davide Manca – Calcoli di Processo dell’Ingegneria Chimica – Politecnico di Milano TM— 29
HOW TO
HT9
Domanda: come si fa a sapere in quale direttorio Matlab™ sta operando?
Risposta: si utilizza il comando: pwd
Esempio:
>> pwd
ans =
E:\MyDocuments\Corsi\CDPDIC\Sources\Matlab\Ese3
HT10
Domanda: come si fa a sapere il nome dei file nel direttorio in cui si sta operando?
Risposta: si utilizza il comando: dir
Esempio:
>> dir
DvdSolveL.m Ese34.m Ese35.m Ese38.m UseDvdSolveA.m
HT12
Domanda: come si fa a cambiare direttorio tramite linea di comando?
Risposta: si utilizza il comando: cd
Esempio:
>> cd c:\windows\system32
HT14
Domanda: come si fa a calcolare la derivata analitica di una funzione
Risposta: si utilizzano i comandi: syms e diff
Esempio:
>> syms x
>> diff(x^3)
ans =
3*x^2
Davide Manca – Calcoli di Processo dell’Ingegneria Chimica – Politecnico di Milano TM— 32
HOW TO
HT15
Esempio:
plot(xF,yF,‘r-'),grid,title('Funzione di Lagrange’);
set(gca,'YLim',[-0.5 1.5]);
Spiegazione: gca è il puntatore alla finestra attuale dove vengono presentati i grafici.
L’istruzione YLim indica che si vuole specificare un intervallo per l’asse delle ordinate. Il
vettore successivo [-0.5 1.5] definisce i valori minimo e massimo per tale asse.
Domanda: come si fa a mostrare i caratteri speciali nelle scritte (ad esempio titolo ed assi di
un diagramma) ?
Esempio:
Altri esempi:
Esempio:
if portata < 0.
exit
end
Spiegazione: l’istruzione exit blocca l’esecuzione del programma, esce dallo script o dalla
funzione in cui Matlab stava operando e torna al prompt dei comandi.
Domanda: come eseguire una serie di istruzioni iterativamente fintantoché una delle due
condizioni non è più vera?
Esempio:
iConto = iConto + 1;
end
Spiegazione: il ciclo while viene eseguito mentre le condizioni poste sono vere. Se ad
esempio si vuole proseguire con le iterazioni, fintantoché l’intervallo (b-a) è maggiore di
EPSI o fintantoché il numero massimo di iterazioni MAX_ITER non è stato raggiunto il ciclo
while riportato nell’esempio è ciò che fa al caso nostro.
Davide Manca – Calcoli di Processo dell’Ingegneria Chimica – Politecnico di Milano TM— 36
HOW TO
HT19
Domanda: esiste un modo per memorizzare una informazione in una variabile di tipo
stringa?
Risposta: Sì. È molto semplice. Basta assegnare la stringa alfanumerica tra virgolette
semplici ad una nuova variabile.
Esempio:
disp(unaStringa);
disp(messaggio);
• http://spicerack.sr.unh.edu/~mathadm/tutorial/software/matlab/
• http://www.engin.umich.edu/group/ctm/basic/basic.html
• http://www.mines.utah.edu/gg_computer_seminar/matlab/matlab.html
• http://www.math.ufl.edu/help/matlab-tutorial/
• http://www.indiana.edu/~statmath/math/matlab/