a
3
lezione - laboratorio
Corso di Laurea Ingegneria
MECCANICA
a.a 2004-2005
Esercizio1 - 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.
Soluzione 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)
Output file ciclo_if.m
>> clear all
>> ciclo_if
>> ciclo_if
Inserisci N 5
Inserisci N 4
A =
A =
2
-1
0
0
0
2
-1
0
0
0
-1
2
-1
0
0
-1
2
-1
0
0
0
-1
2
-1
0
0
-1
2
-1
0
0
0
-1
2
-1
0
0
-1
2
-1
0
0
0
-1
2
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
Esercizio1 – 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.
Soluzione 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
Output file fun_ciclo_if.m
>> clear all
>> A=fun_ciclo_if(5);
>> A=fun_ciclo_if(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
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
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].
File function e risultati esercizio 2
function y =p(x)
y=(x/2.4)^3-2*x/2.4+
…
>> y=p(2.5)
cos(pi* x/2.4);
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.m
On line 2 ==> y=(x/2.4)^32*x/2.4+cos(pi*x/2.4);
Correzione file esercizio 2
function y =p(x)
y=(x/2.4).^3-2*x/2.4+cos(pi*x/2.4);
>> y=p(x)
y =
-2.0280
>>
3.7657
11.8147
Altro modo di risolvere l’esercizio 2
function y =p(x)
f='(x/2.4).^3-2*x/2.4+cos(pi*x/2.4)';
y=eval(f);
>> y=p(x)
y =
-2.0280
>>
3.7657
11.8147
Esercizio 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:4
B- 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.
Come 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’)
• Sintassi per disegnare più curve:
plot(x1, y1,’r:’,x2,y2,‘b-’,...)
Risultato esercizio3
titolo
» title('Grafico ed …')
gtext
etichetta
asse y
»gtext('x3')
» ylabel('y')
etichetta
asse x
» xlabel('x')
File grafico.m
clear all
x=0:0.02:4;
y=3*sin(pi*x);
plot(x,y,'r'),xlabel('x');ylabel('y');grid
hold on
y=exp(-.2*x);
plot(x,y,'g')
%osservare il numero delle intersezioni
gtext('x1');gtext('x2');gtext('x3');gtext('x4')
;
title('Grafico ed intersezioni di 3*sin(pi*x) e
exp(-0.2*x)')
hold off
Come operare con l’editor grafico
Le icone indicate dalle linee, consentono di inserire testo,
frecce e linee su una figura
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…
Come inserire un testo sulla figura
1. Selezionare
l’icona
2. 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
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.
Esercizio 4
Scrivere 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]
Soluzione esercizio 4
function 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');
grid
figure(2)
I=[-2,2];
fplot('fun',I), grid
title('Comando fplot')
xlabel('x');ylabel('y')
Figura 1
Figura 2
Comando subplot
%file figure
x=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”
Risultati file figure
Per utilizzare i file function
1. Salvare le directory: Sis_lin,
eq_non_lin,
Approx, ecc. … nella directory
C:\MATLAB6p1\work
2. 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\work
3. 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!!!!
Scarica

File