Title: 2a lezione - laboratorio
12a lezione - laboratorio
Corso di Laurea Ingegneria MECCANICA
2Come visualizzare leditor
- Per visualizzare leditor del Matlab si può
- digitare il comando edit
- si può selezionare con il mouse dallambiente
di calcolo la voce File e dal menu a tendina che
compare la voce New oppure Open se il file
esiste già
3m-file
File di testo contenente codici MATLAB. Consente
di memorizzare ed organizzare istruzioni e
comandi MATLAB
script
function
4m-file script
EPS1.m - m-file per calcolare la precisione
di macchina num0 EPS1 while
(1EPS)gt1 EPSEPS/2 numnum1 vett(num,)num
EPS fprintf('5.0f 30.16e\n',...
vett(num,)) end
- Standard ASCII file di testo
- Esegue una serie di comandi MATLAB sul workspace
base
N.B. Non accetta argomenti di input e di output
Il carattere serve a scrivere commenti
allinterno di M-file
5Salvare e richiamare m-script
Salvare m-script Dopo avere digitato le
istruzioni nella finestra delleditor di testo,
si salva selezionando sulla barra la voce file e
scegliendo nel menu Save as. Assegnare un nome
Eps1
- Richiamare Si richiama digitando solo il nome
con cui è stato memorizzato il file - Eps1
- N.B. Lo script opera sul Workspace base.
6Risultati del file EPS1.m
eps1 1 5.0000000000000000e-001
2 2.5000000000000000e-001 3
1.2500000000000000e-001 52
2.2204460492503131e-016 53
1.1102230246251565e-016 whos Name
Size Bytes Class EPS 1x1
8 double array num 1x1
8 double array vett 53x2 848
double array Grand total is 108 elements using
864 bytes
EPS1.m - m-file per calcolare la precisione
di macchina num0 EPS1 while (1EPS)gt1
EPSEPS/2 numnum1 vett(num,)num EPS
fprintf('5.0f 30.16e \n',...
vett(num,)) end
7m-file function
function s fatt(c) FATT calcola il
fattoriale di c. s1 if cgt1 for i1c
ssi end end
8Salvare e Richiamare m-function
- Si salva in modo analogo a m-script nome_fun
- Si richiama digitando unuguaglianza del
- tipoout1,out2,out3 nome_fun(in1,in2)
- out1,out2,out3 sono i parametri in uscita,
- in1,in2 sono i parametri in input
- valorefatt(5)
- N.B. La function
- accetta argomenti di input e di output
- opera su unarea di memoria distinta dal
Workspace base (variabili locali)
9Risultati del file fatt.m
function s fatt(c) FATT calcola il
fattoriale del numero c. s1 if cgt1 for
i1c ssi end end
numero 5 valorefatt(numero) valore
120 whos Name Size Bytes Class
numero 1x1 8 double array valore 1x1 8
double array Grand total is 2 elements using 16
bytes
10Come opera il Matlab (ad esempio su fatt)
- controlla se fatt è una variabile in uso, se no
- controlla se fatt è una funzione built-in, se
no.. - controlla se nella directory corrente esiste un
M-file chiamato fatt.m, altrimenti - controlla se il file fatt.m è presente in qualche
directory del path, partendo dallinizio della
lista delle directory indicate e fermandosi
appena trova un file con lo stesso nome, se no - fatt ??? Undefined function or variable fatt.
11Funzioni matematiche elementari
x-1.9 -0.2 3.4 5.6 7.0 round(x) ans
-2 0 3 6 7 fix(x) ans -1
0 3 5 7 floor(x) ans -2
-1 3 5 7 ceil(x) ans -1 0
4 6 7
12Funzioni trigonometriche
x0.21' ysin(x) x y ans
0 0 0.2000 0.1987 0.4000
0.3894 0.6000 0.5646 0.8000 0.7174
1.0000 0.8415
Langolo x deve essere espresso in radianti!!!
13ciclo for
N 4 for I 1N for J 1N
A(I,J) 1/(IJ-1) end end
- È simile a quello di altri linguaggi di
programmazione - Ripete le istruzioni molte volte
- Può essere annidato
Queste istruzioni consentono di costruire la
matrice di Hilbert 4x4.
14Risultati
gtgt A A 1 1/2 1/3
1/4 1/2 1/3 1/4
1/5 1/3 1/4 1/5
1/6 1/4 1/5
1/6 1/7 gtgt comando equivalente hilb(4)
15Esercizio 1 applicazione di ciclo for
- Scrivere un file script tale che, assegnate due
matrici - A1 2 3 4 5 6 7 8 9,
- B5 -6 -9 1 1 0 24 1 0,
- determini la matrice C che ha lelemento C(i,j)
pari a - C(i,j)A(i,j)cos((ij)pi/(nm))B(i,j),
- con
16File prova2.m
A1 2 3 4 5 6 7 8 9 B5 -6 -9 1 1 0 24 1
0 n,msize(A) for i 1n for j1m
C(i,j)A(i,j)cos((ij)pi/(nm))B(i,j)
end end disp('Il risultato è') disp(C)
17Risultati file prova2.m
gtgtprova2 Il risultato è 3.5000 2.0000
7.5000 4.0000 4.5000 6.0000 -5.0000
7.1340 9.0000 gtgt
18Operatori relazionali e logici
Relazionali
Logici
Gli operatori relazionali precedono nellordine
gli operatori logici.
19ciclo while
File ciclo_w.m I1 N4 while I lt N
J 1 while J lt N A(I,J)
(IJ) JJ1 end II1
end
Consente di ripetere le istruzioni sotto il
controllo di una condizione logica
20Risultati file ciclo_w.m
gtgt ciclo_w gtgt A A 2 3 4 5
3 4 5 6 4 5 6 7
5 6 7 8 gtgt
Costruire con cicli while la matrice di Hilbert
4x4.
21Costrutto if - else
ESEMPIO if I J A(I,J) 2 elseif
abs(I-J) 1 A(I,J) -1 else
A(I,J) 0 end
- È una struttura condizionale
- Se una condizione è verificata esegue le
istruzioni associate
22File ciclo_if.m
File Ciclo_if.m N4 for I1N for
J1N if I J A(I,J) 2
elseif abs(I-J) 1 A(I,J) -1
else A(I,J) 0 end
end end
Le istruzioni precedenti, inserite in un doppio
ciclo for, consentono di costruire una matrice
tridiagonale che ha tutti 2 sulla diagonale
principale e -1 sulle codiagonali inferiore e
superiore.
23Risultati file ciclo_if.m
gtgt ciclo_if gtgt A A 2 -1 0 0
-1 2 -1 0 0 -1 2 -1
0 0 -1 2 gtgt
24Comando di input
- input inserimento di variabili numeriche da
tastiera
Sintassi nome_varinput(str) str stringa che si
vuole compaia sul prompt
zinput(' Introduci il valore di z ')
Introduci il valore di z 5 z 5
ainput(' Introduci la matrice a ') Introduci
la matrice a 1 2 3 4 5 6 7 8 9 a 1
2 3 4 5 6 7 8 9
25Comando di input
- input inserimento di stringhe da tastiera
Sintassi var_strinput(str,s) str stringa che
compare sul prompt
flaginput('Vuoi continuare? ','s') Vuoi
continuare? Si flag Si flaginput('Vuoi
continuare? ') Vuoi continuare? 'Si' flag Si
26Comandi di output
- disp consente di stampare linee di testo e
valori di variabili.
Sintassi disp(str) str stringa o nome di una
variabile numerica che si vuole far comparire sul
prompt.
disp('valore della funzione') valore della
funzione
xsqrt(2) disp(x) 1.4142
disp('Il valore di x è ',num2str(x)) Il
valore di x è 1.4142
27Comandi di output
- fprintf consente di stampare linee di testo,
valori numerici e matrici specificandone il
formato.
Sintassi fprintf( format \n, mat )
format è una stringa contenente i formati scelti
con la specifica campo_totale.n_cifre_decimali_
tipo in numero pari alle colonne della matrice
mat \n serve per andare a capo è necessario
scrivere mat per stampare la matrice mat così
come si presenta.
28 temp31 fprintf('La temperatura è di 4.1f
gradi C\n',temp) La temperatura è di 31.0 gradi
C
29Esercizio 2
- Calcolare la funzione f e-xsin(x) nei punti
appartenenti allintervallo 0,1 equispaziati
con passo 0.2. - Costruire una tabella contenente i valori di x e
di f e stamparla utilizzando - 3 cifre decimali in formato virgola fissa per x
- 8 cifre decimali in virgola fissa per f.
30File funzione.m e risultati
x0.21' fexp(-x).sin(x) tabx
f fprintf(' x f\n') fprintf('6.3f
12.8f\n',tab')
x f 0.000 0.00000000 0.200
0.16265669 0.400 0.26103492 0.600
0.30988236 0.800 0.32232887 1.000 0.30955988
Risultati
31Esercizio 3
- Costruire una stringa che mostri il valore della
precisione macchina utilizzare poi un comando di
output per farla stampare sul prompt. - Creare la stringa di input che consente di
assegnare alla variabile A una matrice generica. - Creare la stringa di input che consente di
assegnare alla variabile f la stringa 5x2e-x.
32Soluzioni esercizio 3
- str'la precisione macchina è ',
- num2str(eps)
- disp(str)
- la precisione macchina è 2.2204e-016
- 2. Ainput('inserisci la matrice A ')
- inserisci la matrice A 1 2 34 5 6
-
- 3. finput('inserisci la funzione ')
- inserisci la funzione '5x2exp(x)'
- oppure
- finput('inserisci la funzione ','s')
- inserisci la funzione 5x2exp(x)
- f
- 5x2exp(x)