% VALORE ASSUNTO DA UN POLINOMIO IN UN PUNTO
% Calcola il valore assunto dal polinomio p(x)=3x^4+3x^2+2x+1.1 in x = 3.
% stampa anche il numero dei coefficienti del polinomio
% pari al grado del polinomio + 1
p = [3 0 3 2 1.1];
polyval(p,3)
length(p)

% RISULTATO
% ans =
%   277.1000
% ans =
%      5



% SOMMA DI DUE POLINOMI DELLO STESSO GRADO
% La somma di due polinomio dello stesso grado si puo' effettuare mediante
% somma di due vettori che hanno la stessa lunghezza.
% Somma di p1(x)=3x^4+3x^2+2x+1.1 e p2(x)=x^4-1
p1 = [3 0 3 2 1.1];
p2 = [1 0 0 0 -1];
p1+p2

% RISULTATO
% ans =
%     4.0000         0    3.0000    2.0000    0.1000



% SOMMA DI DUE POLINOMI DI DIVERSO GRADO
% Per effettuare questa operazione in MatLab trasformo il polinomio di grado minore
% in un polinomi dello stesso grado di quello che vado a sommare e poi utilizzo la sintassi precedente.
% Per ottenere lo stesso grado aggiungo degli zeri.
% Somma di p1(x)=3x^4+3x^2+2x+1.1 e p2(x)=x^2-1
p1 = [3 0 3 2 1.1];
p2 = [1 0 -1];
% trasformo p2 in un polinomio dello stesso grado di p1
p2 = [0,0,p2];
p1+p2

% RISULTATO
% ans =
%     3.0000         0    4.0000    2.0000    0.1000



% DIFFERENZA DI DUE POLONOMI
% stesse routine della somma ma questa volta con il segno -
% Differenza p1(x)=3x^4+3x^2+2x+1.1 e p2(x)=x^2-1
p1 = [3 0 3 2 1.1];
p2 = [1 0 -1];
% trasformo p2 in un polinomio dello stesso grado di p1
p2 = [0,0,p2];
p1-p2

% RISULTATO
% ans =
%     3.0000         0    2.0000    2.0000    2.1000



% MOLTIPLICAZIONE DI UN POLINOMIO PER UN NUMERO
% Moltiplica  p1(x)=3x^4+3x^2+2x+1.1 per 5
p1 = [3 0 3 2 1.1];
p1*5

% RISULTATO
% ans =
%    15.0000         0   15.0000   10.0000    5.5000




% MOLTIPLICAZIONE DI DUE POLINOMI
% La moltiplicazione di due polinomi avviene utilizzando il comando conv
% Moltiplica  p1(x)=3x^4+3x^2+2x+1.1 per 5
p1 = [3 0 3 2 1.1];
conv(p1,5)

% RISULTATO
% ans =
%    15.0000         0   15.0000   10.0000    5.5000

% un altro esempio
% Moltiplica p1(x)=3x^4+3x^2+2x+1.1 per p2(x)=x^4-1
p1 = [3 0 3 2 1.1];
p2 = [1 0 0 0 -1];
conv(p1,p2)

% RISULTATO
% ans =
%     3.0000         0    3.0000    2.0000   -1.9000         0   -3.0000   -2.0000   -1.1000



% DIVISIONE DI DUE POLINOMI (QUOZIENTE E RESTO)
% La divisione di due polinomi fornisce quoziente e resto.
% Questo viene effettuato dalla routine deconv
% Divide p1(x)=3x^4+3x^2+2x+1.1 per p2(x)=x^2-1
p1 = [3 0 3 2 1.1];
p2 = [1 0 -1];
[q,r]=deconv(p1,p2)
% verica dei calcoli
% p1 = q*p2+r
p1
conv(q,p2)+r

% RISULTATO
% q =
%      3     0     6
% r =
%          0         0         0    2.0000    7.1000
% p1 =
%     3.0000         0    3.0000    2.0000    1.1000
% ans =
%     3.0000         0    3.0000    2.0000    1.1000



% DERIVATA DI UN POLINOMI
% La derivata di un polinomio si calcola con la routine polyder
% Derivata di p1(x)=3x^4+3x^2+2x+1.1
p1 = [3 0 3 2 1.1];
polyder(p1)

% RISULTATO
% ans =
%     12     0     6     2



% RADICI DI UN POLINOMIO
% Le radici (reali o complesse) di un polinomio, i.e. P(x)=0, si calcolano attravero la routine roots
% Ricordiamo che per un polinomio di grado n ci sono n radici
% Radici di p1(x)=3x^4+3x^2+2x
p1 = [3 0 3 2 0];
roots(p1)

% RISULTATO
% ans =
%         0          
%    0.2617 + 1.0979i
%    0.2617 - 1.0979i
%   -0.5233          
