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 -1Kun polynomin juuret tunnetaan, saadaan kertoimet funktiolla poly.
>> poly(r) ans = 1 2 1Laskumme 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.00Jaetaan 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ä.)