In Matlab un polinomio è rappresentato da un vettore. Per creare un polinomio è sufficiente immettere i coefficiente del
polinomio in un vettore in ordine decrescente. Per esempio, consideriamo il seguente polinomio:
Per inserirlo nel Matlab, è sufficiente registrarlo come un vettore nel modo seguente:
x = [1 10 0.6 12 -7 5]
x =
1 10 0.6 12 -7 5
Il Matlab può interpretare un vettore di lunghezza n+1 come un polinomio di ordine n. Per i coefficienti non presenti
nel polinomio si deve inserire lo zero nella corrispondente posizione del vettore. Per esempio,
in Matlab deve essere rappresentato come:
y = [1 0 0 0 -7 5]
Si può calcolare il valore del polinomio usando la funzione polyval. Per esempio, per trovare il valore del precedente
polinomio per s=2,
z = polyval([1 0 0 0 -7 5],2)
z =
23
E' anche possibile estrarre le radici di un polinomio. Ciò è utile quando si ha un ordine elevato del polinomio, come
Per trovare le radici basta semplicemente inserire il seguente comando:
roots([1 10 0.6 12 -7 5])
ans =
-10.0662
-0.3251 + 1.1240i
-0.3251 - 1.1240i
0.3582 + 0.4843i
0.3582 - 0.4843i
La moltiplicazione tra due polinomi è data dalla convoluzione dei loro coefficienti. La funzione usata dal Matlab è conv.
x = [1 2];
y = [1 4 8];
z = conv(x,y)
z =
1 6 16 16
La divisione di due polinomi viene realizzata con la funzione deconv che restituisce il resto e il risultato. Dividere z
per y equivale ad ottenere x, secondo quanto fatto sopra:
[xx, R] = deconv(z,y)
xx =
1 2
R =
0 0 0 0
Come si può vedere, questo è il polinomio x cercato. Se z non fosse un multiplo di y, il vettore del resto avrebbe alcuni
elementi diversi da zero.
Per sommare due polinomi dello stesso ordine, come già visto, basta eseguire z=x+y (i due vettori devono avere la stessa
lunghezza). Nel caso generale,e cioè quando i due polinomi sono di grado diverso, puoi usare la funzione
da definire, polyadd.
function[polinom]=polyadd(polin1,polin2)
%La funzione polyadd(polin1,polin2) somma due polinomi con dimensioni diverse
if length(polin1) < length(polin2)
corto=polin1;
lungo=polin2;
else
corto=polin2;
lungo=polin1;
end
diff=length(lungo)-length(corto);
if diff > 0
polinom=[zeros(1,diff),corto]+lungo;
else
polinom=lungo+corto;
end
Per usare polyadd, copia la funzione in un
m-file, così da poterla utilizzare come una qualsiasi funzione del toolbox del Matlab. Assumendo che la funzione sia stata
creata, il comando è copletato aggiungendo i polinomi x e y (osserva che in questo esempio i polinomi hanno grado diverso):
z = polyadd(x,y)
x =
1 2
y =
1 4 8
z =
1 5 10