25
3 3 a a lezione - lezione - laboratorio laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Embed Size (px)

Citation preview

Page 1: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

33aa lezione - laboratorio lezione - laboratorio

a.a 2004-2005

Corso di Laurea Ingegneria MECCANICA

Page 2: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Esercizio1 - parte aEsercizio1 - parte a

Inserire nel file ciclo_if.m considerato nella lezione 2, un comando di input per gestire in maniera interattiva la dimensione della matrice; usare poi il comando disp per visualizzare il risultato.Costruire le matrici di dimensioni N=5 e N=4 (nell’ordine) ed analizzare i risultati.

Page 3: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Soluzione esercizio1- parte aSoluzione esercizio1- parte a% File ciclo_if.m

N=input('Inserisci N ');

for I=1:N

for J=1:N

if I == J

A(I,J) = 2;

elseif abs(I-J)== 1

A(I,J) = -1;

else

A(I,J) = 0;

end

end

end

disp('A = ');disp(A)

Page 4: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Output file Output file ciclo_if.mciclo_if.m>> clear all

>> ciclo_if

Inserisci N 5

A =

2 -1 0 0 0

-1 2 -1 0 0

0 -1 2 -1 0

0 0 -1 2 -1

0 0 0 -1 2

>> ciclo_if

Inserisci N 4

A =

2 -1 0 0 0

-1 2 -1 0 0

0 -1 2 -1 0

0 0 -1 2 -1

0 0 0 -1 2

?????• Ad ogni chiamata viene aggiornata nei termini, ma non

nella dimensione, la matrice A contenuta nel workspace• Il nome della variabile di output non può essere modificato

senza modificare il file

Page 5: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Esercizio1 – parte bEsercizio1 – parte b

Creare un file function, dal nome fun_ciclo_if.m, che contenga tutte le istruzioni del file ciclo_if.m, tranne la prima (N=input(‘Inserisci N’)).

Utilizzare il file fun_ciclo_if.m per costruire le matrici con dimensioni N=5 e N=4 (nell’ordine) ed analizzare i risultati.

Page 6: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Soluzione esercizio1 – parte bSoluzione esercizio1 – parte b

function A=fun_ciclo_if(N)

for I=1:N

for J=1:N

if I == J

A(I,J) = 2;

elseif abs(I-J)== 1

A(I,J) = -1;

else

A(I,J) = 0;

end

end

end

Page 7: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Output file Output file fun_ciclo_if.mfun_ciclo_if.m>> clear all

>> A=fun_ciclo_if(5);

A =

2 -1 0 0 0

-1 2 -1 0 0

0 -1 2 -1 0

0 0 -1 2 -1

0 0 0 -1 2

>> A=fun_ciclo_if(4);

A =

2 -1 0 0

-1 2 -1 0

0 -1 2 -1

0 0 -1 2

>>

• Ad ogni chiamata la matrice A, contenuta nel workspace, viene sostituita

• Si possono avere tutte e due le matrici dando un nome diverso alla variabile di output nella chiamata della funzione

Page 8: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Esercizio 2 Esercizio 2

Scrivere un file function che assegni a y la seguente espressione:

y=(x/2.4)^3-2*x/2.4+cos(pi*x/2.4);

Si calcoli, quindi, il valore di y per:

• x=2.5,

• x=[2.3 4.5 6.2].

Page 9: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

File function e risultati esercizio 2 File function e risultati esercizio 2

>> y=p(2.5)y = -1.9445>> x=[2.3 4.5 6.2];>> y=p(x)??? Error using ==> ^Matrix must be square.Error in ==> C:\MATLAB6p1\work\p.mOn line 2 ==> y=(x/2.4)^3-2*x/2.4+cos(pi*x/2.4);

function y =p(x)

y=(x/2.4)^3-2*x/2.4+ …cos(pi* x/2.4);

Page 10: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Correzione file esercizio 2 Correzione file esercizio 2

>> y=p(x)

y =

-2.0280 3.7657 11.8147

>>

>> y=p(x)

y =

-2.0280 3.7657 11.8147

>>

function y =p(x)y=(x/2.4).^3-2*x/2.4+cos(pi*x/2.4);

Page 11: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Altro modo di risolvere l’esercizio 2 Altro modo di risolvere l’esercizio 2

>> y=p(x)

y =

-2.0280 3.7657 11.8147

>>

>> y=p(x)

y =

-2.0280 3.7657 11.8147

>>

function y =p(x)f='(x/2.4).^3-2*x/2.4+cos(pi*x/2.4)';y=eval(f);

Page 12: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Esercizio 3Esercizio 3

A- Scrivere un file script che consenta di disegnare, in [0,4] le funzioni:

y=3*sin(pi*x) e y= exp(-0.2*x) sulla stessa figura. Si consideri la

partizione x = 0:0.02:4B- Inserire le label per gli assi x, y ed il titolo.

C- Usare gtext per indicare i vari punti di intersezione dei grafici.

D- Memorizzare il file col nome grafico.

Page 13: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Come creare un grafico 2-DCome creare un grafico 2-D

Sintassi per disegnare una curva con: • specifica dei dati nel vettore x e/o y• specifica del colore, e dello stile della

linea

plot(x, y, ‘colore_stilelinea’)plot(x, y, ‘colore_stilelinea’)

plot(x1, y1,’r:’,x2,y2,‘b-’,...)plot(x1, y1,’r:’,x2,y2,‘b-’,...)

• Sintassi per disegnare più curve:

Page 14: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Risultato esercizio3 Risultato esercizio3 titolo

» title('Grafico ed …')

etichetta asse y

» ylabel('y')

etichetta asse x

» xlabel('x')

gtext

»gtext('x3')

Page 15: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

File File grafico.mgrafico.m

clear allx=0:0.02:4;y=3*sin(pi*x);plot(x,y,'r'),xlabel('x');ylabel('y');gridhold on y=exp(-.2*x);plot(x,y,'g') %osservare il numero delle intersezionigtext('x1');gtext('x2');gtext('x3');gtext('x4');

title('Grafico ed intersezioni di 3*sin(pi*x) e exp(-0.2*x)')

hold off

clear allx=0:0.02:4;y=3*sin(pi*x);plot(x,y,'r'),xlabel('x');ylabel('y');gridhold on y=exp(-.2*x);plot(x,y,'g') %osservare il numero delle intersezionigtext('x1');gtext('x2');gtext('x3');gtext('x4');

title('Grafico ed intersezioni di 3*sin(pi*x) e exp(-0.2*x)')

hold off

Page 16: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Come operare con l’editor graficoCome operare con l’editor grafico

Accedere alla finestra “property editor” per migliorare il grafico, selezionando, con il mouse, la voce Edit sulla figura e, dal menu che compare, la voce Figure Properties…

Le icone indicate dalle linee, consentono di inserire testo, frecce e linee su una figura

Page 17: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Come inserire un testo sulla figuraCome inserire un testo sulla figura1. Selezionare

l’icona2. Posizionarsi nel

punto desiderato e cliccare

3. Scrivere x_3 per ottenere x3 (opp. x^3 per x3)

4. cliccare fuori dal riquadro per rendere attivo lo scritto

Page 18: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Come Come inserire una freccia sulla figura

1. Selezionare l’icona

2. Posizionarsi nel punto di inizio della freccia, cliccare il tasto sinistro del mouse che si deve trascinare fino al punto di arrivo della freccia.

Page 19: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Esercizio 4Esercizio 4Scrivere un file script che consenta di disegnare, in [-2,2] e su due “figure” distinte, il grafico della funzione: f(x)=exp(-x2)cos(20x) che viene definita nella function fun, utilizzando i comandi MATLAB:• plot per la figura 1 • fplot per la figura 2.

N.B. Si può utilizzare la partizione x=[-2:0.1:2]

Page 20: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Soluzione esercizio 4Soluzione esercizio 4function y=fun(x)y=exp(-x.^2).*cos(20*x);

figure(1)x=[-2:0.1:2];y=fun(x); plot(x,y),title('Comando plot')xlabel('x');ylabel('y');gridfigure(2)I=[-2,2];fplot('fun',I), gridtitle('Comando fplot')xlabel('x');ylabel('y')

Page 21: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Figura 1Figura 1

Page 22: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Figura 2Figura 2

Page 23: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Comando subplotComando subplot%file figurex=0.1:.1:5;subplot(2,3,1);plot(x,x);title('y=x');xlabel('x'); ylabel('y');subplot(2,3,2);plot(x,x.^2);title('y= x^2');xlabel('x'); ylabel('y');subplot(2,3,3),plot(x,x.^3);title('y= x^3');xlabel('x'); ylabel('y');subplot(2,3,4),plot(x,cos(x));title('y=cos(x)');xlabel('x');ylabel('y');subplot(2,3,5),plot(x,cos(2*x));title('y=cos(2x)');xlabel('x');ylabel('y')subplot(2,3,6),plot(x,cos(3*x));title('y=cos(3x)');xlabel('x');ylabel('y')% I colori e lo spessore sono stati aggiunti utilizzando “figure properties”

Page 24: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Risultati file figureRisultati file figure

Page 25: 3 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Per utilizzare i file functionPer utilizzare i file function

1. Salvare le directory: Sis_lin, eq_non_lin,Approx, ecc. … nella directory

C:\MATLAB6p1\work2. Salvare il file che si sta creando in editing e che magari contiene i dati per l’input della function che si vuole utilizzare, nella directory: C:\MATLAB6p1\work3. Mettere in Current Directory il nome della directory che contiene le function Matlab che si vogliono utilizzare ad esempio C:\MATLAB6p1\work\eq_non_lin Buon lavoro!!!!