%% Harj. 2 Teht. 6
%{ 
Seuraavassa p,q jne ovat vektoreita, jotka edustavat polynomeja 
(siis polynomien kerroinvektoreita).

   a. Kirjoita yleispätevä Matlab-lauseke, joka laskee polynomien p ja q 
      summan. Olkoot p:n ja q:n asteluvut m ja n, oletetaan: m <= n.
   b. Kirjoita Matlab-lauseke, joka muodostaa polynomin p derivaatan.
      Vast: Kts. Matlab-funktion polyder koodia. Mutta älä vielä!
   c. Muodosta tehtävän 1 polynomien p ja q tulo r funktiolla conv 
      "konvoluutio". Tarkista, päteekö

         polyval(r,x)==polyval(p,x)*polyval(q,x)

      missä x on sopiva vektori. (Pituus vähintään asteluku+1)
%}
%% a)
clear  % Poistetaan muuttujat
close all  % Suljetaan kaikki grafiikkaikkunat.
format compact  % Tulostus tiiviiksi.
% Esimerkki:
p=[1 0 2 -1]
q=[2 0 0 0 0 3]
k=length(q)-length(p) ; % Tämä on se yleinen lauseke.
p=[zeros(1,k) p]
s=p+q

%% a') Miten tuo sujuisi ilman tietoa siitä, kumpi on korkeampiasteinen?
%{
Ajatus: Tehdään 2-rivinen 0-matriisi, jossa max-asteluvun verran
sarakkeita. Työnnetään polynomivekorit perille saakka. Helpottaa,
kun end:llä voi viitata viimeiseen alkioon (sarakkeeseen),
%}

m=length(p); n=length(q);
M=max(m,n)  % tai M=max([m n])
S=zeros(2,M)
S(1,end-m+1:end)=p;
S(2,end-n+1:end)=q;
S
sum(S)
% Hauska tapa, vai mitä?
%% b)
%{ 
Laske kynällä ja paperilla thän tapaan:
pf(x)= a_4*x^3 + a_3*x^2 + a_2*x + a_1  
dpf(x) = 3*a_4*x^2 + 2*a_3*x + a_2

Kerroinesitykset:

p=[a4 a3 a2 a1]
dp=[3 2 1].*p(1:end-1)

Yleisesti:
     n=length(p);
     dp=(n-1:-1:1).*p(1:end-1)
%}
% Testataan:
p=[2 0 1 -1 3]
n=length(p);
dp=(n-1:-1:1).*p(1:end-1)
% Oikein menee.
%% c)-kohdan saat tehdä itse. Siinä ei ole teknisesti eroa a)-kohtaan,
% paitsi, että on helpompi. 
%{
Hyvä huomata, että signaalinkäsitelyssä
tarvittava konvoluutio on polynomien kertomista. (Ihan elegantisi 
toteutettavissa Matlab:lla, mutta antaapa nyt olla.)
Kysymys riittävästä määrästä x-pisteitä tarkoittaa sitä, että jos
n-asteiset polynomit yhtyvät n+1:ssä pisteessä, niin ne yhtyvät 
kaikkialla.
%}
