Polynomi esitetään kerroinvektorina korkeimman asteen termistä alkaen. Esim. polynomia
edustaa kerroinvektori c=[1 2 1] .
Polynomiyhtälön ratkaisu
saadaan funktiolla roots. Kyseessä on (tietenkin) numeerinen ratkaisu.
>> c=[1 2 1]
c =
1 2 1
>> r=roots(c)
r =
-1
-1
Kun polynomin juuret tunnetaan, saadaan kertoimet funktiolla poly.
>> poly(r)
ans =
1 2 1
Laskumme osoitti siis, että x2 + 2x + 1 = (x+1)(x+1).
Funktio roots suoritti (numeerisen) tekijöihin jaon ja poly puolestaan
auki kertomisen, symboliohjelmien "expand"-toiminnon.
Astetta (+1) kiinnostavampi esimerkki: Bombielli-niminen matemaatikko tutki joskus 1500-luvulla yhtälöä x3 - 15x = 4.
>> c=[1 0 -15 -4];
>> r=roots(c)
ans =
4.0000
-3.7321
-0.2679
>> format long
>> poly(r)
ans =
Columns 1 through 2
1.000000000000000 0.000000000000002
Columns 3 through 4
-15.000000000000007 -4.000000000000003
Polynomin arvon laskenta tapahtuu polyval-funktiolla.
Kts. esimerkkejä ja "teoriaa" tästä
lyhyestä
(Tietysti myös >>help polyval.)
Teoriasta tässä vain senverran, että polynomiyhtälön ratkaisu suoritetaan
Matlab:ssa (tietysti) numeerisesti, joten mitään periaatteellista rajoitusta
asteluvulle ei ole. (Yllä viitatussa lyhyessä on asiasta hiukan tarkemmin.)
Symbolic toolbox:n avulla voidaan suorittaa myös symolilaskentaa. Alla pikku esimerkkitehtävä.
Tehtäviä
>> syms x % Julistetaan muuttuja x symboliseksi.
>> expand((x+1)^2) % Symbolisissa operaatioissa ei tarvita muotoa (.^),
% mutta se on sallittu.
>> factor(ans)
axis equal . (Muista, että 1-ympyrän voi esittää paitsi (cos(t),sin(t))-
esityksenä, myös p1(x)p2(x)= (2x2+3x +1)(5x - 2) = 10x3+11x2-x - 2.
>> p1=[2 3 1];
>> p2=[5 -2];
>> p3=conv(p1,p2)
p3 =
10.00 11.00 -1.00 -2.00
Jaetaan takaisin:
>> deconv(p3,p1)
ans =
5.00 -2.00
>> deconv(p3,p2) % Pelkkä osamäärä.
ans =
2.00 3.00 1.00
>> [q,r]=deconv(p3,p2) % Osamäärä ja jakojäännös, tässä 0-polynomi.
q =
2.00 3.00 1.00
r =
0 0 0 0.00
>> p3(2)=1 % Muutetaan p3:a, jotta jako ei mene tasan.
p3 =
10.00 1.00 7.00 -2.00
>> [q,r]=deconv(p3,p1)
q =
5.00 3.00 % Osamäärä: 5x + 3
r =
0 0 5.00 -5.00
%jakojäännös: 5x - 5
>> conv(q,p1)+r % Tarkistus:
ans =
10.00 1.00 7.00 -2.00
% Jakoidentiteetti toteutui!
Huomaa: Polynomien yhteen- ja vähennyslaskussa on huolehdittava
tavittaessa, että lyhempi vektori täytetään etunollilla, tässä etunollat
tulivat automaattisesti mukaan. (Vrt. toukokuun kurssin polynomien
yhteenlaskutehtävä.)