Matlab
Sponsored Links
This presentation is the property of its rightful owner.
1 / 39

MATLAB PowerPoint PPT Presentation


  • 118 Views
  • Uploaded on
  • Presentation posted in: General

MATLAB. Annalisa Pascarella [email protected] …di cosa parliamo oggi…. Piccola introduzione a Matlab Matrici definizione operazioni Sistemi lineari Ax=b A quadrata singolare e non A m x n Esercizi. MATLAB. MATrix LABoratory Linguaggio di programmazione interpretato

Download Presentation

MATLAB

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


MATLAB


Annalisa Pascarella

[email protected]


…di cosa parliamo oggi…

  • Piccola introduzione a Matlab

  • Matrici

    • definizione

    • operazioni

  • Sistemi lineari Ax=b

    • A quadrata singolare e non

    • A m x n

  • Esercizi


MATLAB

  • MATrix LABoratory

  • Linguaggio di programmazione interpretato

    • legge un comando per volta eseguendolo immediatamente

  • Per avviarlo ->

    icona sul desktop

command

window


4 + 7

invio

x = 9 -> invio

MATLAB come calcolatrice-1

  • è possibile definire variabili e operare su esse


MATLAB come calcolatrice-2

  • Operatori aritmetici+, -, *, /, ^,

  • Caratteri speciali ;, %, :

  • Variabili predefinitei, pi, NaN, Inf

    • 2/0->Inf

    • 0/0->NaN (Not-a-Number)

  • Funzioni elementarisin, cos, log, exp

  • Comandi speciali help, clear

help sqrt


Lavorare con MATLAB

  • In MATLAB tutte le variabili sono trattate come matrici

    • scalari->matrici 1 x 1

    • vettori riga->matrici 1 x n

      v = (v1,…, vn)

    • vettori colonna->matrici n x 1

      v = (v1,…, vn)T

    • matrici-> matrici m x n


per separare le righe

trasposto

Vettori

  • Per definire un vettore riga

  • Per definire un vettore colonna

a = [1 2 3 4 5]

o

a = [1, 2, 3, 4, 5]

a = [1; 2; 3; 4; 5]

o

a = [1 2 3 4 5] ’


A = [3 0; 1 2]

A = [3 0

1 2]

B = [3 0 3; 1 2 0]

Matrici - 1

  • Per definire una matrice

  • size(B)->dimensioni della matrice

    • per memorizzare le dimensioni -> [r c] = size(B)


a1 = [3 0]

a2 = [1 2]

A = [a1;a2]

Matrici - 2

b1 = [3;1]

b2 = [0; 2]

b3 = [3; 0]

B = [b1, b2, b3]


Il comando :

  • Importante per la manipolazione delle matrici

  • Esempi

    • generazione di vettori che siano delle progressione aritmetiche di passo costante

      • a = [1:10]o a = 1:10

      • b = 1: .2 : 4

      • c = 3:0->non produce niente!!!!

      • c = 3: -1: 1

    • mediante : si possono estrarre righe e colonne


Esercizio1

  • Costruire il vettore

    • v = [1,2,…,19,20,20,19,…,2,1]

  • Costruire la matrice A avente come colonne i 3 vettori

    • v1 = [1,2,…,9]

    • v2 = [2,4,…,18]

    • v3 = [9,8,…,1]


B(2,3)

B(2,3) = 1;

B

Individuare\modificare elementi

per selezionare un elemento

per modificare l’elemento

per visualizzare B


B(:,[1 3])

B(:,2:3)

B(2,:)

B(:,2)

Estrarre sottomatrici

estrarre la riga R2

estrarre la colonna C2

sottomatrice 2 x 2


Diagonale di A

d = diag(A)

diag(d)

Matrici diagonali

costruisce anche matrici diagonali

a = [ 1 2 ];diag(a)


triu(B)

tril(A)

matrice triangolare inferiore ->

Matrici triangolari

matrice triangolare superiore ->


identità di ordine n->eye(n)

eye(3)

zeros(m,n)

zeros(2,3)

ones(m,n)

ones(2,3)

matrice nulla m x n->

Identità-zero-uno

matrice m x n di 1->


A(3,3) = 3

C = [2 3; 1 1]

D = [A C]

Matrici a blocchi

  • I modo

  • II modo

  • III modo

C(3:4,3:4) = eye(2)


Operazioni - 1

clear

A=[1 2;3 4];

B=[1 0;-1 1];

C=[0 3 1;1 2 4];

D=[3 4 -1;5 2 3;0 1 -1];


??? Error using = => +

Matrix dimensions must

agree.

Operazioni - somma

A+B

Somma / Differenza

A-B

A+C

Trasposta

A’


Operazioni - prodotto

Prodotto

#CA = #RB

A*B

Elemento per elemento

size(A) = size(B)

A.*B

Prodotto per uno scalare

A*k


Determinante

det(B)

det(D)

1

0

Determinante 

2

rank(D)

Rango 

inv(B)

inv(D)

B^(-1)

Inversa 

?


Esercizio 2

  • Costruire le matrici A e B

  • Estrarre da A 2 sottomatrici:

    • una costituita dalle ultime 3 colonne

    • una costituita dalla I e III riga e dalle colonne II e IV


matrice dei coefficienti

matrice dei termine noti

Sistemi Lineari

Teorema di Rouchè-Capelli

  • rango(A) = rango(A|b) <=> il sistema è risolubile

  • rango(A) = rango(A|b) = n => unica soluzione

  • rango(A) = rango(A|b) = p < n => ∞n-p soluzioni


Risoluzione di sistemi Lineari

Ax = b

  • Sostituzione

  • Cramer

    • SE A è quadrata E invertibile

  • Algoritmo di Gauss

    • operazioni elementari sulle righe

    • pivotizzazione (parziale o totale) -> importante quando si implementa l’algoritmo al calcolatore


il simbolo nn è quello della divisione!!

Sistemi Lineari non singolari

  • la soluzione è calcolata mediante l’algoritmo Gaussiano con pivot parziale

  • tempo richiesto minore del calcolo dell’inversa

x = A\b

x = inv(A)*b


Esempio

A = [1 1 1; 1 1 -1; 1 -1 1];

b = [3 2 2]’;

det(A)

x = A\b

ci assicuriamo che il det di A sia diverso da zero


A quadrata singolare

A = [3 4 -1; 5 2 3; 0 1 -1];

b = [14 14 2]’;

rank(A)

rank([A b])

per vedere se il sistema è

risolubile confrontiamo il

rango di A con quello della

matrice completa (A|b)

questo sistema è risolubile in quanto rango(A)=rango(A|b)=2 => ∞ soluzioni


Il comando rref

  • Per studiare e risolvere un sistema qualunque si deve ridurre la matrice completa (A|b)

    • Si usa il comandorref(reduced row echelon form )

rref([A b])

rrefmovie([A b])


A non quadrata

A = [1 0 1; 0 -1 0];

b = [0 1]’;

rank(A)

rank([A b])

rref([A b])

questo sistema è risolubile in quanto rango(A)=rango(A|b)=2 => ∞ soluzioni


…riassumendo…

  • A quadrata NON singolare

    • Matlab ci fornisce la soluzione

  • A quadrata singolare o A m x n

    • rref ci restituisce la matrix ridotta

    • le soluzioni le dobbiamo scrivere noi a partire dalla matrix ridotta ottenuta

x = A\b

rank(A)

rank([A b])

rref([A b])


Esercizi

  • Studiare e risolvere, eventualmente, i seguenti sistemi lineari:

  • Lanciare per l’ultima matrice il comando rrefmovie([A b])


Vettori l.i.

  • sono linearmenti indipendenti


il rango è 3 => i vettori sono l.i. e quindi formano una base per R3

Esempio - 1

v1 = [1 0 2]’;

v2 = [2 1 1]’;

v3 = [1 2 0]’;

A = [v1 v2 v3]

rank(A)


il rango è 3 => i vettori sono l.d.

Esempio - 2

v1 = [1 2 0 1]’;

v2 = [2 2 1 1]’;

v3 = [1 0 1 0]’;

v4 = [0 2 0 2]’;

A = [v1 v2 v3 v4]

rank(A)


Esempio - 2

  • Per trovare una c.l. nulla a coefficienti nn tutti nulli t.c.

    troviamo una soluzione nn nulla del sistema omogeneo Ak = 0

rref(A)


il rango è 3 => i vettori sono l.i.

i coefficienti lineari della combinazione si trovano:

k=A\v

Basi

  • Dopo aver verificato che i vettori v1, v2, v3 sono una base di R3esprimere v come c.l. dei vi

v1 = [1 1 0’]’;

v2 = [0 1 1]’;

v3 = [1 0 1]’;

v = [1 1 1]’;

A = [v1 v2 v3]

rank(A)


…ricapitolando…

  • sono l.i.  rank(A)=m A (n>=m)

  • W = span(v1,v2,…,vm)

    • dim W = rank(A)

    • per trovare una base del s.s. BWsi considerano i vettori l.i. che costituiscono la matrix A

    • per esprimere un vettore w come c.l. dei vettori della base, si forma la matrix B avente per colonne le componenti di tali vettori e si risolve il sistema Bk=w

  • se i vettori sono l.d. => i coefficienti di una loro combinazione lineare non nulla si trovano risolvendo il sistema Ak=0


Esercizio


  • Login