Polinomi (approccio numerico)
Un polinomio è rappresentato da un vettore riga che contiene i coefficienti del polinomio in ordine decrescente delle potenze della variabile x.
Ad esempio
p=[1 0 -6 3]
permette di rappresentare x3 − 6x + 3.
y = polyval(p,x1) permette di calcolare il valore del polinomio p per x=x1
r = roots(p) permette di trovare numericamente le radici di p.
>> p = [1 0 -6 3];
>> r = roots(p)
r =
-2.6691
2.1451
0.5240
p = poly(r) esegue il passaggio opposto, ovvero permette di trovare numericamente i coefficienti del polinomio con le radici contenute nel vettore r.
>> poly(r)
ans =
1.0000 0.0000 -6.0000 3.0000
Il prodotto di due polinomi a(x) e b(x) si ottiene effettuando la convoluzione dei loro coefficienti conv(a,b).
Ad esempio siano a(x) = x2 + 2x + 3 e b(x) = 4x2 + 5x + 6
a(x) * b(x) = 4x4 + 13x3 + 28x2 + 27x + 18
in Matlab:
>> a = [1 2 3];
>> b = [4 5 6];
>> c = conv(a,b)
c =
4 13 28 27 18
la divisione fra due polinomi c(x) e a(x) si ottiene effettuando la deconvoluzione dei loro coefficienti mediante l’istruzione deconv(c,a)
>> [q r] = deconv(c,a)
q =
4 5 6 % polinomio quoziente
r =
0 0 0 0 0 % polinomio resto
INTERPOLAZIONE DI DATI
Matlab consente anche di calcolare il polinomio interpolante dati due vettori x e y di ordine m mediante il metodo dei minimi quadrati:
p=polyfit(x,y,n)
restituisce il polinomio p di grado n che interpola ottimamente i dati nel senso dei minimi quadrati.
SVILUPPO IN FRATTI SEMPLICI
Dato un rapporto di polinomi
il suo sviluppo in fratti semplici è del tipo
e può essere calcolato con [R,P,K]=residue(n,d), dove R è il vettore dei residui, P quello dei poli e K contiene i coefficienti del polinomio diretto.
Ad esempio, si voglia trovare la scomposizione in fratti semplici di
Con Matlab si risolve con:
>> n = [1 1];
>> d = [1 5 6];
>> [R P K] = residue(n,d)
R =
2.0000
-1.0000
P =
-3.0000
-2.0000
K =
[]
e quindi lo sviluppo è