2a lezione - laboratorio - PowerPoint PPT Presentation

1 / 32
About This Presentation
Title:

2a lezione - laboratorio

Description:

Title: Introduzione al MATLAB Author: enza Last modified by: Elisabetta Santi Created Date: 2/10/2000 9:39:38 AM Document presentation format: Presentazione su schermo – PowerPoint PPT presentation

Number of Views:69
Avg rating:3.0/5.0
Slides: 33
Provided by: enz89
Category:

less

Transcript and Presenter's Notes

Title: 2a lezione - laboratorio


1
2a lezione - laboratorio
Corso di Laurea Ingegneria MECCANICA
  • a.a 2004-2005

2
Come 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à

3
m-file
File di testo contenente codici MATLAB. Consente
di memorizzare ed organizzare istruzioni e
comandi MATLAB
script
function
4
m-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
5
Salvare 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.

6
Risultati 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
7
m-file function
function s fatt(c) FATT calcola il
fattoriale di c. s1 if cgt1 for i1c
ssi end end
8
Salvare 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)

9
Risultati 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
10
Come 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.

11
Funzioni 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
12
Funzioni 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!!!
13
ciclo 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.
14
Risultati
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)
15
Esercizio 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

16
File 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)
17
Risultati 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
18
Operatori relazionali e logici
Relazionali
Logici
Gli operatori relazionali precedono nellordine
gli operatori logici.
19
ciclo 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
20
Risultati 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.
21
Costrutto 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

22
File 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.
23
Risultati 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
24
Comando 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
25
Comando 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
26
Comandi 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
27
Comandi 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
29
Esercizio 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.

30
File 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
31
Esercizio 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.

32
Soluzioni 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)
Write a Comment
User Comments (0)
About PowerShow.com