Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Introduzione a MATLAB
Università degli Studi di Napoli Federico II
CdL Ing. Elettrica
Corso di Laboratorio di Circuiti Elettrici
Dr. Carlo Petrarca
Dipartimento di Ingegneria Elettrica e
Tecnologie dell’Informazione
Università di Napoli FEDERICO II
1
Lezione n.4
Equazioni algebriche lineari
2
11 1 12 2 1 1
21 1 22 2 2 2
1 1 2 2
....
....
........
....
n n
n n
m m mn n m
a x a x a x b
a x a x a x b
a x a x a x b
Un sistema di m equazioni algebriche lineari in n incognite si presenta
nella forma
2
Risolvere il sistema significa trovare il vettore x delle incognite.
Soluzione del sistema è ogni n-pla di numeri che, sostituiti
ordinatamente alle n incognite, rendono ogni primo membro uguale al
rispettivo secondo membro
Se un sistema ammette soluzioni, esso è detto compatibile.
Se il sistema ammette un’unica soluzione, è detto determinato.
Dato un sistema di equazioni lineari, ci chiediamo:
1) Il sistema ammette soluzioni (il sistema è compatibile)?
2) Quante soluzioni ammette?
3) Quali sono le soluzioni?
3
Se un sistema non ammette soluzioni è incompatibile.
Se il sistema ammette più soluzioni è detto indeterminato.
Condizione necessaria e sufficiente affinché un sistema sia compatibile
è che la matrice A dei coefficienti delle incognite e la matrice completa
(A|b) che si ottiene aggiungendo ad essa la colonna dei termini noti,
abbiano lo stesso rango
Teorema di Rouchè-Capelli:
In un sistema compatibile, se il numero di equazioni è inferiore al
numero di incognite (m<n) si possono avere infinite soluzioni
Se il sistema è composto da n equazioni in n incognite, allora un
sistema compatibile ha una ed una sola soluzione se:
rank(A)=n
cioè se la matrice A ha rango massimo.
4
se la matrice A ha rango massimo :
a) il determinante di A è diverso da zero;
b) la matrice A è invertibile ed esiste A-1 ;
c) la soluzione è:
bAx1
5
vettore incognite matrice coefficienti delle incognite Vettore termini noti
Il sistema può essere posto in forma matriciale:
Ax b
11 12 1
21 22 2
1 1
..
..
.. .. .. ..
..
n
n
m m mn
a a a
a a a
a a a
A
1
2
..
n
x
x
x
x
1
2
..
m
b
b
b
b
Esercizio
Creare un file .m per risolvere il sistema:
Soluzione
x1= 2.10; x2= 1.05; x3= 1.90
66
% Matrice A dei coefficienti delle incognite
A=[2 -4 0;3 4 -5;1 0 1];
% Vettore colonna b dei termini noti
b=[0; 1; 4];
% Soluzione del sistema
x=inv(A)*b;
% Mostro il risultato
disp('Il vettore x risulta: ')
disp([x(1) x(2) x(3)])
Il calcolo numerico possiede limitazioni ben precise dovute a:
a. errore generato dall’algoritmo di calcolo;
b. errore generato da qualsiasi macchina, dovuto al fatto che il
calcolatore può rappresentare solo un numero finito di cifre.
Questo secondo tipo di errore si propaga ad ogni
operazione e dà luogo al classico errore di arrotondamento.
c. necessità di modificare l’algoritmo di calcolo per problemi di
tempo, di memoria, di stabilità numerica
MATLAB usa il sistema floating point (punto che si sposta) per
rappresentare un numero x:
e
tdddx .... 21
10241021 ;53 ;2 etcon:7
la costante eps contiene l’epsilon di macchina. è il
numero più piccolo che sommato ad 1 restituisce un
valore maggiore di 1 :
1 1
dà indicazioni sul massimo numero di cifre significative
2.2204 16eps e
8
realmax è il più grande numero rappresentabile in Matlab
nella forma 2^k
realmax = 1.7977e+308
realmax*2 = Inf
1+eps/2 = 1
Sistema di equazioni lineari nelle incognite x1 e x2:
Perturbiamo leggermente la matrice A. Ci aspettiamo che le soluzioni non cambino:
1 2
1 2
10
1.002 0
x x
x x
1 1 10;
1.002 1 0
A b 5010 , 5000 21 xx
Invece ….
1 1 10;
1.001 1 0
A b1 210000; 10010x x
Le soluzioni sono sensibilmente diverse !!!!!
0001.1
10
21
21
xx
xx
9
Una delle conseguenze dell’errore di arrotondamento riguarda
l’accuratezza dei risultati .
Può accadere che piccole perturbazioni nella matrice A portino a
grandi perturbazioni nella soluzione. In tal caso il sistema si dice mal
condizionato
La funzione cond ci permette di verificare se il sistema è mal
condizionato.
E’ auspicabile avere valori di cond bassi. Se il valore di cond è elevato,
allora si suggerisce di cambiare algoritmo: ad esempio, non usare
l’inversione ma usare la il metodo di Cramer o la fattorizzazione LU
cond(A) = 4.0020 e+003
10
Il sistema dell’esempio precedente è mal condizionato ed è pertanto
molto sensibile alle piccole perturbazioni. Infatti si ha:
Regola di CramerDato un sistema di equazioni lineari con A matrice quadrata di
ordine n non singolare, se indichiamo con Ai la matrice ottenuta
sostituendo la i-esima colonna di A con il vettore colonna b,
11
det
detix
iA
A
la soluzione è data da:
11
12
1 2 3
1 2 3
1 2 3
5 2 2 2
3 4 1
3 0
x x x
x x x
x x x
5 2 2
1 3 4
1 3 1
A
2
1
0
b
1
2
3
x
x
x
x
1 2 3
2 2 2 5 2 2 5 2 2
1 3 4 1 1 4 1 3 1
0 3 1 1 0 1 1 3 026 1 29, ,
93 93 93 93 93 93x x x
det 93 A
12
Esercizio
Usare il metodo di Cramer per risolvere il sistema:
Esercizi
Creare un file .m per risolvere il seguente sistema:
1 2 3
1 2 3
1 2 3
3 5 2 0
6 5 4
8 4 6 5
x x x
x x x
x x x
Soluzione
x1-2.1275; x2= 2.1667; x3= -2.2255
1313
14
% Esempio di m-file
clear all; clc;
% Matrice A dei coefficienti delle incognite
A=[3 5 2; -1 6 5; 8 4 -6];
% Vettore colonna b dei termini noti
b=[0; 4; 5];
% Controllo se il sistema è ben-condizionato
% Se l'indice cond è molto grande, il sistema è mal-condizionato
disp('Indice cond')
disp(cond(A))
% Ricavo il vettore colonna x delle incognite
x=inv(A)*b;
% Mostro i risultati
disp('Valori delle incognite')
disp(' x(1) x(2) x(3)')
disp([x(1) x(2) x(3)])
Grafici
Se x e y sono due vettori della stessa lunghezza, il comando
plot(x,y) permette di tracciare il grafico della funzione y=f(x)
x=[-2*pi:pi/10:2*pi]; y=sin(x); plot(x,y)
Il comando plot permette di costruire grafici
15
Ogni volta che si traccia un grafico, viene aperta una finestra Figure
16
Se si invia un nuovo comando plot, nella finestra Figure il grafico
precedente viene sostituito da quello nuovo.
Il comando figure consente di creare una nuova finestra in cui
inserire il grafico.
x=[1:100]; y=log10(x); figure(1); plot(x,y) w=[-100:100]; z=10*w.^2+6*w+3; figure(2); plot(w,z))
plot(x,y,’s’)
Il comando plot consente di specificare il colore, lo stile, I
marker della linea da tracciare. A tal fine, è necessario inserire
la stringa ‘s’ :
la stringa ‘s’ ha la forma del tipo ‘s’=‘colore-marker-stile’
Ad esempio:
colore: b (blue)
g (green)
r (red)
y (yellow)
c (cyan)
k (black)
marker: . (punto)
o (cerchio)
s (quadrato)
+ (croce)
* (stella)
d (rombo)
x (ics)
stile: - (continua)
: (puntata)
-. (punto-linea)
-- (tratteggiata)
17
plot(x,y,'ro--')
-8 -6 -4 -2 0 2 4 6 8-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
-8 -6 -4 -2 0 2 4 6 8-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
-8 -6 -4 -2 0 2 4 6 8-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
-8 -6 -4 -2 0 2 4 6 8-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
plot(x,y,'mv')plot(x,y,'k*:')
plot(x,y,'gd-')
18
Il comando hold on consente di tracciare più curve su uno
stesso grafico
-8 -6 -4 -2 0 2 4 6 8-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
>> x=[-2*pi:pi/10:2*pi]; y=sin(x); plot(x,y)
>> z=cos(x); hold on; plot(x,z,'r+-')
19
Possiamo inserire un titolo al grafico
>> title(‘Funzione seno')
Possiamo dare un’etichetta agli assi x e y
>> xlabel('x [rad]')
>> ylabel('sin(x)')
20
Possiamo decidere il tipo di carattere da utilizzare
>> xlabel('x [rad]‘,’Fontame’, ‘Arial’)
O anche la dimensione del carattere
>> xlabel('x [rad]‘,’Fontname’, ‘Arial’,’Fontsize’, 13)
Possiamo anche usare caratteri dell’alfabeto greco
>> title('Funzione sen( \omega t + \alpha)')
MATLAB assegna automaticamente il range degli assi. Si può usare il
comando axis([xmin xmax ymin ymax]) per scegliere il range in
modo autonomo
>> axis([-2*pi 2*pi -1 1])
Il comando grid consente di mostrare una griglia
>> grid
21
Funzione sen(t + )
Oppure usare pedici e apici
>> ylabel('successione x_n = \beta _1 + n^2') successione xn=1 + n2
22
Cliccando sul comando Tools – Edit plot è possibile modificare
manualmente le caratteristiche del grafico e, cioè, cambiare i colori, i
simboli, il titolo, gli assi, ecc.
Il comando subplot
Il comando subplot permette di costruire più grafici nella
stessa finestra
subplot(m,n,p)
Suddivide la finestra in una matrice (mn) di grafici
Seleziona il grafico p-esimo
subplot(2,3,1)
Ottengo una finestra con (2 3) grafici e lavoro sul grafico 1
23
Creare il file usa_subplot.m con il quale tracciare su un unico grafico le
funzioni: sin(x); cos(x); sin(x)^2; cos(x)^2; cos(x)*sin(x); cos(x)+sin(x)
0 5 10-1
-0.5
0
0.5
1Funzione sin(x)
0 5 10-1
-0.5
0
0.5
1Funzione cos(x)
0 5 100
0.2
0.4
0.6
0.8
1Funzione sin(x)2
0 5 100
0.2
0.4
0.6
0.8
1Funzione cos(x)2
0 5 10-0.5
0
0.5Funzione sin(x)*cos(x)
0 5 10-1.5
-1
-0.5
0
0.5
1
1.5Funzione sin(x)+cos(x)
24
sin - Seno
asin - Arcoseno
cos - Coseno
acos - Arcocoseno
tan - Tangente
atan - Arcotangente.
exp - Esponenziale
log - Logaritmo naturale
log10 - Logaritmo (base 10)
sqrt - Radice quadrata
abs - Valore assoluto
max - Massimo
min - Minimo
25
Funzioni elementari
26
>> y=cos(5*4)
y =
0.4081
>> y=cos(5)*4
y=
1.1346
Esempi:
4*5cosy 4*5cosy
L’argomento della funzione cos è espresso in radianti
>> y=cos(pi)
y =
-1 cosy
L’argomento della funzione cosd è espresso in gradi
>> y=cosd(180)
y =
-1
180cosy
Regole di priorità:
27
Esempi:
Esercizio. Calcolare l’espressione:
>> a=5e+3
a=
5000e+3 significa 103
>> a=5*exp(3)
a=
100.4277
exp(3) significa e3
e=2.7183
7
2cos
10*54 34ey
>> y=sqrt((4*exp(4)+5e+3)/cos(2*pi/7))
y =
91.4858