Contents

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
p =
     1     0     2    -1
q =
     2     0     0     0     0     3
p =
     0     0     1     0     2    -1
s =
     2     0     1     0     2     2

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ä?
M =
     6
S =
     0     0     0     0     0     0
     0     0     0     0     0     0
S =
     0     0     1     0     2    -1
     2     0     0     0     0     3
ans =
     2     0     1     0     2     2

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.
p =
     2     0     1    -1     3
dp =
     8     0     2    -1

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.
%}