• Non ci sono risultati.

MATLAB - Programmazione - 2

N/A
N/A
Protected

Academic year: 2021

Condividi "MATLAB - Programmazione - 2"

Copied!
18
0
0

Testo completo

(1)

MATLAB - Programmazione - 2

Antonino Polimeno

antonino.polimeno@unipd.it

(2)

Manipolazione di matrici - 1

Input di matrici

→ Definizione manuale: A = [1, 2, 3; 7, 8, 9]

→ Generazione da funzioni

→ Lettura da file (e.g. “load”)

Operazioni su matrici

→ Addizione (+), sottrazione (-), moltiplicazione (*)

→ Divisione sinistra: x = A \ b è la soluzione di A*x = b

→ Divisione destra: x = b / A è la soluzione di x*A = b

→ Potenza (^)

→ Aggiunta (‘)

→ Trasposta (.’)

Le operazioni * , ^, \, / si riferiscono agli elementi della matrice se precedute dal punto (.)

(3)

Manipolazione di matrici - 2

Operazioni sugli elementi di matrici

Operazioni Forma algebrica MATLAB

Addizione a + b a + b

Sottrazione a – b a – b

Moltiplicazione a x b a .* b

Divisione a  b a ./ b

Esponente ab a .^ b

>> x = [ 1 2 3 ];

>> y = [ 4 5 6 ];

>> z = x .* y z =

4 10 18

Esempio: gli elementi di z sono i prodotti

degli elementi di x e y

(4)

Manipolazione di matrici - 3

− Elemento i,j: A(i, j).

− Vettore colonna formato dagli elementi 1,2,3 della colonna 2 della matrice: A(1:3 , 2)

− Matrice formata dalle righe 1,2,3 e dalle colonne 2,3,4:

A([1:3], [2:4])

− Matrici speciali:

− Matrice di zeri: zeros(1,3)

− Matrice di uno: ones(2,4)

− Matrice di numeri casuali con distribuzione uniforme: rand(3,5)

− Matrice di numeri casuali con distribuzione normale: randn(2,5)

A=magic(3): quadrato magico 3x3

(5)

Manipolazione di matrici - 4

zeros(n) n x n matrice di zeri

zeros(m,n) m x n matrice di zeri

ones(n) n x n matrice di uno

ones(m,n) m x n matrice di uno

size (A) per una matrice m x n matrix A, è il vettore riga 1x2 che contiene il numero di righe e colonne

length(A) per una matrice m x n matrix A, è il numero massimo tra m e n

X = [A1, A2 …; B1, B2 …; … ] concatenazione di matrici (se compatibili)

(6)

Manipolazione di matrici - 5

Aggiunta B = A’

Identità eye(n) → matrice identità n x n

eye(m,n) → matrice m x n matrix con 1 nella ‘diagonale’

e 0 negli altri elementi Somme/sottrazioni C = A + B

C = A – B Moltiplicazione scalare B = A.

Moltiplicazione C = A*B

Inversa B = inv(A), con A n x n

N.B. rank (A) → dà il rango di A

Potenza B = A.^2 matrice di elementi quadrati di A C = A * A matrice quadrata di A, con A n x n Determinante det (A),, con A n x n

A, B, C matrici generiche, e m, n,  scalari

(7)

Sistemi lineari - 1

− Sistema di 3 equazioni lineari in tre incognite:

1 2 3

1 2 3

1 2 3

3 2 – 10

3 2 5 – – 1

x x x

x x x

x x x

 

   

 

1 2 3

3 2 1 10

1 3 2 5

1 1 1 1

x x x

     

     

          

        

     

A x b Ax b

(8)

Sistemi lineari - 2

− Soluzione con calcolo dell’inversa Ax = b

A-1Ax = A-1b x = A-1b

− MATLAB:

>> A = [ 3 2 -1; -1 3 2;

1 -1 -1];

>> b = [ 10; 5; -1];

>> x = inv(A)*b x =

-2.0000 5.0000 -6.0000

Answer: x1 = -2, x2 = 5, x3 = -6

− Soluzione diretta Ax = b

− MATLAB:

>> A = [ 3 2 -1; -1 3 2;

1 -1 -1];

>> b = [ 10; 5; -1];

>> x = A\b x =

-2.0000 5.0000 -6.0000

(9)

Polinomi - 1

− I polinomi sono rappresentati come vettori dei coefficienti in MATLAB.

− Esempio: A(s) = s3 + 3s2 + 3s + 1 è rappresentato come il vettore [1 3 3 1]

− Se s è uno scalare, possiamo generare uno scalare

>> A = s^3 + 3*s^2 + 3*s + 1;

− Se s è una matrice, generiamo una una matrice in cui ogni elemento è un polinomio nel corrispondente elemento di s

>> A = s.^3 + 3*s.^2 + 3*s. + 1;

− La funzione polyval(a,s) valuta un polinomio con coefficienti nel vettore a per i valori di s

>> s = linspace (-5, 5, 100);

>> coeff = [ 1 3 3 1];

>> A = polyval (coeff, s);

>> plot (s, A),

>> xlabel ('s')

>> ylabel ('A(s)')

(10)

Polinomi - 2

Operazione MATLAB

Somma c = a + b somma dei polinomi

Prodotto per uno scalare

b = 3*a polinomio A per 3

Prodotto di polinomi

c = conv(a,b) coefficienti del polinomio prodotto di A e B

Divisione di polinomi

[q,r] = deconv(a,b) q è il vettore dei coefficienti del polinomio quoziente, r è il vettore dei coefficienti del polinomio resto

Derivata polyder(a) coefficienti della derivata

polyder(a, b) coefficienti della derivata del prodotto.

[n,d]=polyder(b,a) coefficienti della derivata del rapporto

Radici roots(a) radici del polinomio.

poly(r) polinomio che ha per radici gli elementi del vettore r

(11)

Script - 1

− Script: istruzioni raggruppate in un file

− Esempio script magicrank.m che plotta i ranghi dei primi 20 quadrati magici

r = zeros(1,20);

for n = 1:20

r(n) = rank(magic(n));

end

bar(r)

− Il file può essere richiamato da Matlab semplicemente come

>> magirank

(12)

Script - 2

(13)

Script - 3

− Gli script sono file ASCII (testo) con estensione .m, e.g. filename.m

− Possiama definire delle funzioni, che possono essere richiamate da Matlab con degli argomenti

− Il nome del file deve coincidere con il nome della funzione

− Esempio

− definizione di yplusx.m

function yplusx(y,x) z = y + x;

end

− esecuzione di yplusx

>> yplus(4,5) ans =

9

(14)

Controlli

→ If

→ Switch

→ For loops

→ While loops

→ Continue

→ Break

If A > B

‘greater’

elseif A < B

‘less’

elseif A = = B

‘equal’

else

error(‘Unexpected situation’) end

for i = 1:m for j = 1:n

H(i,j) =1/(i+j) end

end

(15)

Grafica - 1

− Plot del polinomio y = 2x

2

+ 7x + 9 (lin/lin, log/lin,lin/log, log/log)

% Generate the polynomial:

x = linspace (0, 10, 100);

y = 2*x.^2 + 7*x + 9;

% plotting the polynomial:

figure (1);

subplot (2,2,1), plot (x,y);

title ('Polynomial, linear/linear scale');

ylabel ('y'), grid;

subplot (2,2,2), semilogx (x,y);

title ('Polynomial, log/linear scale');

ylabel ('y'), grid;

subplot (2,2,3), semilogy (x,y);

title ('Polynomial, linear/log scale');

xlabel('x'), ylabel ('y'), grid;

subplot (2,2,4), loglog (x,y);

title ('Polynomial, log/log scale');

xlabel('x'), ylabel ('y'), grid;

− Per aggiungere grafici ad un grafico esistente: hold on

− plot multipli: subplot

(16)

Grafica - 2

(17)

Grafica - 3

grid on Aggiunge una griglia di inee tratteggiate nei tick marks

grid off Rimuove la griglia

grid Cambia lo stato della grliglia ( da off a on, oppure da on a off)

title (‘text’) Titolo

xlabel (‘text’) Etichetta ascisse ylabel (‘text’) Etichetta ordinate

text (x,y,’text’) Aggiunge un testo nella posizione (x,y) dove (x,y)

sono definiti nelle unità di misura del grafico

(18)

Grafica - 4

Simbolo Colore

y giallo

m magenta

c cyan

r rosso

g verde

b blu

w bianco

k nero

Symbol Marker

.

o

x

+ +

*

s

d

v

^

h esagono

Colore del marker o della linea Marker Stile linea

Simbolo Stile

intera

: punteggiata

–. linea-punto – – tratteggiata

Riferimenti

Documenti correlati

Tracciamento della retta in base al passaggio per 2 punti (si ricordi che con asse delle ascisse cartesiano e relativo alla variabile Y nulla cambia rispetto alla carta

[r]

In questi commenti ci proponiamo di trovare tutti i punti di flesso

Per le soluzioni di una equazione algebrica di quarto grado non c’`e una formula ragionevole (per dire la verit`a, esiste una formula, ma `e troppo complicata e non

Perci`o dovrebbe esistere un punto di flesso a sinistra di −1.. In questi commenti ci proponiamo di trovare tutti i punti di

esista, nel secondo

Per` o, dato un insieme numerabile A, la questione di trovare una esplicita funzione biettiva f : N → A, o, dati due insieme numerabili A e B, il trovare una esplicita funzione

Riassumiamo in un grafico lo studio