Laboratorio di MATLAB

 1. Numeri complessi

In Matlab gli scalari sono per default numeri complessi, ed i numeri reali sono trattati come numeri complessi con parte immaginaria nulla.

1.1 Rappresentazione. L'unità immaginaria è indicata con la lettera i o con la lettera j. Un numero complesso a + b i, dove a e b sono due numeri reali dati, si scrive in uno dei seguenti modi equivalenti: a + bi, a + b*i, a + bj, a + b*j.

1.2 Somma e prodotto. Le operazioni elementari tra numeri complessi si effettuano nel modo usuale: z + w, z - w, z*w, z^n, z/w.

Ø Calcolare z = ( 1 + 2 i )5:

» z = ( 1 + 2i )^5
z =
41.0000 -38.0000i

1.3 Parte reale ed immaginaria. La parte reale e la parte immaginaria di un numero complesso z si ottengono con i comandi real e imag.

1.4 Modulo ed argomento. Il modulo e l'argomento (in radianti) di un numero complesso z si ottengono rispettivamente con i comandi abs e angle.

Ø Calcolare modulo e argomento di z = 1 / 2 + sqrt(3) / 2 i:

» z = 1/2 + sqrt(3)/2*i
z =
0.5000 + 0.8660i
» abs(z)
ans =
1.0000
» angle(z)
ans =
1.0472

1.5 Coniugato. Il coniugato di un numero complasso si ottiene con il comando conj.

Ø Calcolare il coniugato di z = 2 + sqrt(3) i:

» z = 2 + sqrt(3)*i
z =
2.0000 + 1.7321i
» conj(z)
ans =
2.0000 - 1.7321i

1.6 Rappresentazione grafica. Un numero complesso z può essere rappresentato graficamente, nel piano di Gauss, in più modi. Con il comando compass( z ) si rappresenta z come vettore. Con il comando plot( z, 'o' ) si rappresenta z come un punto circolare nel piano di Gauss; mentre con plot( z, 'square' ) si rappresenta z come un punto quadrato.

Ø Rappresentare graficamente il numero complesso z = 1/2 + sqrt(3)/2 i:

z = 1/2 + sqrt(3)/2*i
z =
0.5000 + 0.8660i
» compass(z)
» plot(z,'o')

Con il comando plot si possono rappresentare nel piano di Gauss più numeri complessi contemporaneamente.

Ø Rappresentare graficamente i numeri complessi z = 1 + i e w = 2 + 3i

» z1 = 1 + i, z2 = 1 + 2i, z3 = 2 + i
z1 =
1.0000 + 1.0000i
z2 =
1.0000 + 2.0000i
z3 =
2.0000 + 1.0000i
» plot( [ z1, z2, z3 ],'square')

Ø Rappresentare graficamente le radici decime dell'unità.

» t = 0 : 2*pi / 10 : 2*pi;
» plot( exp( i*t ), '-o' ), axis equal


Ø Rappresentare graficamente le radici quindicesime dell'unità.

» t = 0 : 2*pi / 15 : 2*pi;
» plot( exp( i*t ), '-o' ), axis equal

 2. Polinomi

2.1 Rappresentazione. In Matlab i polinomi in una variabile (a coefficienti complessi) sono rappresentati mediante il vettore dei suoi coefficienti (ordinati secondo le potenze decrescenti della variabile). Quindi il polinomio

p( x ) = an xn + an-1 xn-1 + . . . + a1 x + a0

è rappresentato mediante il vettore riga formato dagli n + 1coefficienti

[ an, an-1, . . . , a1, a0 ].

2.2 Operazioni. Poiché in Matlab i polinomi sono rappresentati mediante vettori, le operazioni tra polinomi diventano operazioni tra vettori, e gli operatori definiti sui polinomi diventano operatori su vettori.

2.2.1 Prodotto di un numero per un polinomio. E' semplicemente il prodotto di un numero per un vettore.

Ø Si calcoli il polinomio 3 ( 2 x2 - 3 x + 1 ):

» 3*[2,-3,2]
ans =
6 -9 6

2.2.2 Somma e differenza di polinomi. La somma e la differenza di polinomi si riduce alle corrispondenti operazioni tra vettori. Bisogna però tenere presente che queste operazioni sono definite solo per vettori delle stessa lunghezza. Di conseguenza, per sommare due polinomi di grado diverso, bisogna aggiungere un opportuno numeri di zeri in testa al vettore che rappresenta il polinomio di grado più basso.

Ø Calcolare la somma e la differenza dei seguenti polinomi

p( x ) = 2 x3 - 41 x2 - 15 x + 10,

q( x ) = x4 + 2 x3 - x2 - x + 1:


» p = [ 0, 2, -41, -15, 10 ]; q = [ 1, 2, -1, -1, 1 ];
» p + q
ans =
1 4 -42 -16 11
» p - q
ans =
-1 0 -40 -14 9

2.2.3 Prodotto di polinomi. Il prodotto di due polinomi si ottiene utilizzando il comando conv (per convolution), applicato ai vettori che rappresentano i due polinomi. In questo caso non è necessario che i vettori siano della stessa lunghezza.

ØSi calcoli il prodotto dei seguenti polinomi

p( x ) = 2 x4 - x3 + 3 x - 1,
q( x ) = x5 + 3 x4 + x3 + 5 x2 + 4 x + 1:

» conv( [ 2, -1, 0, 3, -1 ], [ 1, 3, 1, 5, 4, 1 ] )
ans =
2 5 -1 12 11 -2 13 7 -1 -1

2.2.4 Quoziente e resto di due polinomi. Dati due polinomi a(x) e b(x), esistono sempre due polinomi q(x) (quoziente) ed r(x) (resto) tali che

a(x) = q(x) b(x) + r(x)

e deg( r(x) ) < deg( a(x) ). Per ottenere questi due polinomi si utilizza il comando deconv (deconvolution), applicato ai vettori che reppresentano i due polinomi a(x) e b(x).

Ø Calcolare quziente e resto della divisione tra i polinomi

a( x ) = x5 + 4 x4 + x3 + 2 x2 + 4 x + 1,
b( x ) = x4 - x3 - x + 2:

» [ q, r ] = deconv( [ 1, 4, 1, 2, 4, 1 ], [ 1, -1, 0, -1, 2 ] )
q =
1 5
r =
0 0 6 3 7 -9


» deconv( [ 1, 4, 1, 2, 4, 1 ], [ 1, -1, 0, -1, 2 ] )
ans =
1 5

2.2.5 Valutazione di un polinomio in un punto. Per valutare un polinomi p( x ) in un punto x = x0, si utilizza il comando polyval.

Ø Valutare il polinomio p(x) = 3 x3 + 2 x2 - 4 x + 12 in x = 7:

» polyval( [ 3, 2, -4, 12 ], 7 )
ans =
1111

Siano p e v due vettori. Con polyval( p, v ) si calcola il vettore dei valori che il polinomio p assume in corrispondeza dei valori contenuti in v.

Ø Valutare il polinomio p(x) = x3 + 2 x2 + 3 x + 4 in x = 1, 2, 3:

» p = [ 1 2 3 4 ]
p =
1 2 3 4
» v = [ 1 2 3 ]
v =
1 2 3
» polyval( p, v )
ans =
10 26 58

2.2.6 Polinomio con date radici. Il comando poly, applicato ad un vettore v, genera il vettore (riga) che rappresenta il polinomio che ammette gli elementi di v come radici.

Ø Polinomio con radici 1, 2, 3, 1 + 2 i, 1 - 2 :

» poly( [ 1, 2, 3, 1 + 2i, 1 - 2i ] )

ans =

1 -8 28 -58 67 -30

Quindi il polinomio cercato è x5 - 8 x4 + 28 x3 - 58 x2 + 67 x - 30.


2.2.6 Radici di un polinomio
. Ricordiamo che una radice del polinomio p( x ) è un numero (complesso) r tale che p( r ) = 0.
In Matlab il comando roots genera il vettore (colonna) delle radici di un polinomio.

Ø Calcolare le radici del polinomio x2 + x + 1:

» roots( [ 1, 1, 1 ] )
ans =
-0.5000 + 0.8660i
-0.5000 - 0.8660i

Con il comando roots si possono anche risolvere le equazioni algebriche.

Ø Calcolare le soluzioni dell'equazione x3 + 2 x2 + x + 1 = 0:

» roots( [ 1, 2, 1, 1 ] )
ans =
-1.7549
-0.1226 + 0.7449i
-0.1226 - 0.7449i

2.2.8 Derivata di un polinomio. La derivata del polinomio

p( x ) = an xn + an-1 xn-1 + . . . + a1 x + a0

è, per definizione, il polinomio

p'( x ) = n an xn-1 + ( n - 1 ) an-1 xn-2 + . . . + a1.

In Matlab la derivata di un polinomio viene calcolata con il comando polyder, applicato al vettore che rappresenta il polinomio.

ØSi calcoli la derivata del polinomio p(x)= x5 +3 x4 - 4 x2 + x + 1:

» polyder( [ 1, 3, 0, -4, 1, 1] )
ans =
5 12 0 -8 1

2.2.9 Rappresentazione grafica di un polinomio. Per ottenere il grafico di un polinomio si può utilizzare il comando fplot. Ad esempio, per tracciare il grafico di x2 sull'intervallo [ - 1, 1 ], si scrive fplot( 'x^2', [ -1, 1 ] ). Il primo argomento di fplot è il polinomio scritto in forma simbolica (e racchiuso tra apici, essendo una stringa), mentre il secondo argomento è l'intervallo su cui si vuole tracciare il grafico.

ØTracciare il grafico del polinomio f( x ) = x4 - 5 x2 + 4 sull'intervallo [ - 3, 3 ]:

» fplot( 'x^4-5*x^2+4', [ -3, 3 ] )

ØTracciare contemporaneamente il grafico dei due polinomi seguenti x4 - 5 x2 + 4 e x^2 - 1, sull'intervallo [ - 3, 3 ]:

» fplot( '[ x^4-5*x^2+4, x^2 ]', [ -3, 3 ] )

 3. Esercizi

Ø Esercizio Calcolare la somma ed il prodotto dei polinomi

p( x ) = 2 x5 + 23 x4 + 14 x3 - 12 x,
q( x ) = 8 x3 + 10 x2 + 11 x - 7.

Ø Esercizio Valutare il polinomio p( x ) = x5 + 2 x4 + x3 + 2 x + 1 nei punti x = 1, 3, 5, 7, 9, 11, 13, 15.

Ø Risposta polyval( [ 1 2 1 2 1 ], [ 1 : 2 : 15 ] )


Ø
Esercizio Trovare il polinomio monico di quarto grado, a coefficienti reali, che possiede le radici 1 - i, 1 + i, 2 + i, 2 - i.
Ø Esercizio Dato il polinomio p( x ) = x5 + 3 x4 + 4 x3 + 2 x + 2

  1. calcolare la derivata prima di p( x );
  2. calcolare il prodotto p(x) p'( x );
  3. tracciare il grafico di p(x) e di p'( x ), in uno stesso sistema di riferimento.

Ø Risposta fplot( '[ x^5+3*x^4+4*x^3+2*x+2, 5*x^4+12*x^3+12*x^2+2 ]', [-2, 2] )

Ø Esercizio Tracciare il grafico del seguente polinomio sull'intervallo [ -1, 4 ]

p( x ) = 0.025 x5 - 0.0625 x4 - 0.333 x3 + x^2.

Ø Risposta fplot( '0.025*x^5-0.0625*x^4-0.333*x^3+x^2', [-1,4])