Tarinoita polynomeista (osa 1)
Jukka Tuomela
Itä-Suomen yliopisto, Joensuu
jukka.tuomela@uef.fi
Lähtökohtia
Polynomeja esiintyy kaikkialla matematiikassa, joten polynomeihin liittyviä kysymyksiä voi tulla esille osatehtävinä hyvin monissa eri yhteyksissä. Ei siis ole ihme, että lukiossa käsitellään polynomeja, ja matematiikkakilpailuissakin usein on polynomeihin liittyviä tehtäviä. Nämä tehtävät ovat kuitenkin usein jotenkin kummallisia, ja niihin liittyvät mallivastauksetkin ovat joskus hiukan erikoisia. Ei kuitenkaan ole ihan yksinkertaista selittää, missä mielessä minusta tehtävät ovat joskus hassuja, ja mikä sitten olisi “luonnollisempi” tapa tarkastella polynomitehtäviä.
Tämä kirjoitus lähtikin liikkeelle yrityksestä selventää tätä asiaa, mutta huomasin, että asiaa tulikin helposti aika paljon, joten oli sitten parasta jakaa tämä kirjoitus osiin. Katsotaan sitten montako osaa tarvitaan.
Ehkäpä lyhyesti voisi sanoa, että polynomitehtävät usein perustuvat johonkin näppärään kikkaan, joka toimii, kun tehtävän polynomi on huolellisesti valittu. Toisaalta monesti tehtävän voisi ratkaista algoritmisesti aivan yleisessäkin tapauksessa. Mutta asia varmaankin selkenee, kun katsotaan tarkemmin joitain esimerkkejä. Käytän seuraavassa esimerkkeinä tehtäviä, jotka ovat joko ylioppilaskirjoituksista1 tai matematiikkakilpailusivuilta2.
Tässä kirjoituksessa ei oleteta mitään erityisiä lukion ulkopuolen esitietoja. Jotkut termit ja merkinnät voivat olla uusia, mutta tämän ei pitäisi olla ongelmallista. Esitiedoiksi riittää, että tietää, mikä on polynomi ja miten polynomeja lasketaan yhteen ja kerrotaan. Jos sitten haluaa syvällisemmin perehtyä polynomeihin voi aloittaa erinomaisesta kirjasta [2].
Perusasiat
Lähdetään liikkeelle yhden muuttujan polynomeista, jotka ovat muotoa
\[f=a_0+a_1x+\dots+a_nx^n=\sum_{j=0}^n a_jx^j. \tag{1}\]
Jos \(a_n\ne 0\), niin sanotaan, että polynomin aste on \(n\) ja merkitään \(\mathsf{deg}(f)=n\). Tällöin sanotaan, että \(\mathsf{LT}(f)=a_nx^n\) on \(f\):n isoin termi (leading term).
Usein tehtävissä esiintyvissä polynomeissa kertoimet \(a_j\) ovat rationaalilukuja, mutta ne voisivat myös olla reaali- tai kompleksilukuja.
Olkoon nyt \(\mathbb{Q}\) rationaalilukujen joukko; jos on annettu polynomi (1), missä \(a_j\in \mathbb{Q}\), niin merkitään \(f\in \mathbb{Q}[x]\). Hyvin usein tehtävissä esiintyy kuitenkin “parametreja”; tavallaan ne ovat muuttujia, kuten “varsinainen” muuttuja \(x\), mutta kuitenkin tehtävän kannalta jotenkin eri asemassa.
Esimerkki 1. Keväällä 2014 ylioppilaskirjoituksissa kysyttiin, millä parametrin arvolla \(a\) polynomilla
\[f=ax^2-5x+2\]
on kaksinkertainen nollakohta. Tehtävä ratkeaa helposti, kun kirjoitetaan
\[f=ax^2-5x+2=a(x-b)^2=ax^2-2abx+ab^2.\]
Vertaamalla kertoimia nähdään, että \(a=25/8\) ja \(b=4/5\). \(\Box\)
Kun kertoimissa on parametreja, on usein kätevää ajatella, että kertoimet ovat parametrien rationaalifunktioita:
\(h\) on \(a\):n rationaalifunktio, \(h\in \mathbb{Q}(a)\), jos \(h=f/g\), missä \(f\), \(g\in \mathbb{Q}[a]\).
Ennen kuin päästään asiaan, otetaan vielä pari termiä. Joukko \(\mathbb{Q}[x]\) on rengas, mikä tarkoittaa, että voidaan laskea yhteen ja kertoa, mutta käänteisalkiota ei ole: jos \(f\) on polynomi, niin \(1/f\) ei ole polynomi (paitsi jos \(f\) on vakio). Sen sijaan \(\mathbb{Q}\) ja \(\mathbb{Q}(a)\) ovat kuntia; näissä myös käänteisalkio on olemassa, joten jos \(h\) on rationaalifunktio, niin myös \(1/h\) on rationaalifunktio. Nyt voidaan kirjoittaa
\[f=ax^2-5x+2\in\mathbb{Q}(a)[x].\]
Samoin voidaan merkitä monen muuttujan tapauksessa, esimerkiksi
\[\begin{align*} f&=\frac{b}{a^2} x^2+\frac{a^3b^2}{a-b^4} y^3-\frac{1}{a+b} xy\\ &\phantom{mmmmmmmmmmmmn}+ \frac{2ab}{a^2+2b^2}\in\mathbb{Q}(a,b)[x,y]. \end{align*}\]
Tässä ajatellaan, että \(f\) on polynomi muuttujien \(x\) ja \(y\) suhteen, ja kertoimet ovat parametrien \(a\) ja \(b\) rationaalifunktioita.
Jos sitten \(\mathbb{R}\) on reaaliluvut, niin periaatteessa voitaisiin tarkastella reaalikertoimisia polynomeja: \(f\in\mathbb{R}[x]\). Tässä kirjoituksessa ei kuitenkaan tehdä näin. Syy on se, että tarkoituksena on ottaa algoritminen näkökulma; katsotaan mitä oikeasti voidaan käsin laskea, tai mitä tietokoneelle voi ohjelmoida. Reaaliluvuilla ei voi laskea, sillä niille ei ole äärellistä esitysmuotoa. Muistetaan, että tietokoneet käyttävät liukulukuja (floating point numbers), kun ne approksimoivat reaalilukuja. Toisaalta jos jossain laskussa esiintyy vaikkapa luku \(\pi\), niin sehän on laskun kannalta kuten mikä tahansa parametri, joten voitaisiin kirjoittaa
\[f=x^3+2\pi x+3\pi^3\in\mathbb{Q}(\pi)[x].\]
Jatkossa polynomin kertoimet ovat pääasiassa joko rationaalilukuja tai rationaalifunktioita.
Algebran peruslause
Olkoon \(f\) kuten yhtälössä (1) ja oletetaan nyt, että \(a_j\in\mathbb{Q}\) ja \(a_n\ne 0\). Algebran peruslauseen mukaan \(f\) voidaan kirjoittaa muodossa
\[f=a_n(x-b_1)^{\ell_1}\dots(x-b_k)^{\ell_k}, \tag{2}\]
missä \(b_i\ne b_j\), kun \(i\ne j\), ja \(\ell_1+\dots+\ell_k=n\). Luvut \(b_j\), jotka ovat \(f\):n nollakohdat, ovat yleisesti ottaen kompleksilukuja. Jos siis tiedetään nollakohdat \(b_j\) ja niitten kertaluvut \(\ell_j\), niin polynomi voidaan aina jakaa lineaarisiin tekijöihin. Termi lineaarinen viittaa siihen, että \(x-b_j\) on ensimmäisen asteen polynomi. Sanotaan vielä, että nollakohta on yksinkertainen, jos sen kertaluku on yksi.
Usein on kuitenkin mukavampi kirjoittaa
\[f=a_n(x-b_1)\dots(x-b_n), \tag{3}\]
missä kaikki nollakohdat eivät välttämättä ole erisuuria, vaan niitä toistetaan kertaluvun ilmoittama määrä. Huomaa, että yleisesti ottaen nollakohdat ovat yksinkertaisia, jos polynomin kertoimet valitaan “satunnaisesti”.
Kertomalla auki nähdään, että
\[\begin{align*} & b_1\cdots b_n=(-1)^n \frac{a_0}{a_n}\\[2pt] & b_1+\dots+b_n=-\frac{a_{n-1}}{a_n}, \end{align*} \tag{4}\]
mikä on joskus hyödyllistä.
Jos ei haluta kompleksilukuja, niin voidaan jakaa reaalisiin tekijöihin. Muistetaan, että jos polynomin kertoimet ovat reaalisia, niin kompleksiset nollakohdat esiintyvät liittolukupareina. Jos \(b\) on kompleksinen nollakohta, niin
\[(x-b)(x-\bar b)=x^2-2\Re b\,x+|b|^2.\]
Saadaan siis toisen asteen tekijä \(x^2+cx +d\), missä \(c^2-4d<0\). Tämä johtaa “reaaliseen algebran peruslauseeseen”. Tällöin polynomi (1) voidaan kirjoittaa muodossa
\[f=a_n(x-b_1)\cdots(x-b_\ell)(x^2+c_1x+d_1)\cdots (x^2+c_kx+d_k),\]
missä \(b_j\), \(c_j\) ja \(d_j\) ovat reaalisia, \(\ell+2k=n\) ja \(c_j^2-4d_j<0\). Esimerkiksi
\[\begin{align*} x^4+4 &= (x^2+2x+2)(x^2-2x+2)\\ &= (x+1+i)(x+1-i)(x-1+i)(x-1-i). \end{align*}\]
Reaalinen perusmuoto voi joskus olla kätevämpi. Hyvin usein tehtävissä tarkastellaan vain reaalista tapausta, jolloin kompleksiset nollakohdat tyypillisesti ovat epäoleellisia ratkaisun kannalta.
Koska \(\mathbb{Q}\subset\mathbb{R}\subset\mathbb{C}\), niin sanotaan, että \(\mathbb{R}\) on kunnan \(\mathbb{Q}\) kuntalaajennus, ja samoin \(\mathbb{C}\) on sekä \(\mathbb{Q}\):n että \(\mathbb{R}\):n kuntalaajennus. Ideana on, että koska yleensä polynomilla \(f\in\mathbb{Q}[x]\) ei ole nollakohtia \(\mathbb{Q}\):ssa, niin yritetään löytää ne nollakohdat jostain isommasta joukosta. Algebran peruslause siis sanoo, että \(\mathbb{C}\) on “riittävän” iso: aina löytyy tarpeeksi nollakohtia.
Jossain mielessä tämä intuitiivisesti selittää, miksi reaaliluvuilla ja kompleksiluvuilla ei voi olla äärellistä esitysmuotoa: joukkojen \(\mathbb{R}\) ja \(\mathbb{C}\) täytyy olla valtavan isoja, jotta siellä olisi nollakohdat kaikille polynomeille, jopa reaali- ja kompleksikertoimisille, joten tällaisia joukkoja ei voi algoritmisesti käsitellä.
Tunnetusti ei ole mitään algoritmia, millä nollakohdat \(b_j\) voitaisiin tarkasti laskea. Palataan myöhemmin tarkemmin siihen, mitä johtopäätöksiä tästä pitäisi vetää.
Lukiotehtävissä ja kilpailutehtävissä esiintyvät polynomit eivät kuitenkaan missään mielessä ole “satunnaisia”, vaan päinvastoin ne on varta vasten valittu siten, että niillä on joitain erityisominaisuuksia. Esimerkiksi näissä tehtävissä polynomeilla on usein nollakohtana \(0\), \(\pm 1\) tai \(\pm 2\). Oletetaan siis, että tehtävän ratkaisija löytää tämän kokeilemalla, ja pääsee sitten tämän avulla tehtävässä eteenpäin.
Esimerkki 2. Syksyn 2016 ylioppilaskirjoituksissa oli kaksikin tämäntyyppistä tehtävää. Toisessa tarvittiin tekijöihin jakoa
\[x^3+6x^2-7x=x(x-1)(x+7)\]
ja toisessa puolestaan
\[\begin{align*} &x^7-60x-8=\\ &\phantom{n}(x-2)(x^6+2x^5+4x^4+8x^3+16x^2+32x+4). \Box \end{align*}\]
Esimerkki 3. Pohjoismaisessa matematiikkakilpailussa vuonna 2003 tehtävä ratkesi, kun huomasi, että
\[\begin{align*} f&= x^8 - x^7 + 2x^6 - 2x^5 + 3x^4 - 3x^3 + 4x^2 - 4x +\frac{5}{2} \\ &=x(x-1)\big(x^6 + 2x^4 + 3x^2 + 4\big)+\frac{5}{2}. \end{align*}\]
Tehtävässä piti osoittaa, että \(f\ge0\) kaikilla \(x\). \(\Box\)
Esimerkki 4. Baltian tie -matematiikkakilpailuissa vuonna 1993 tehtävän ratkaisu edellytti, että jaetaan polynomi
\[f=x^{12}-x^8-x^4+1\]
tekijöihin. Tässä \(x^4=\pm 1\) ovat nollakohtia, minkä jälkeen helposti löydetään
\[f=(x-1)^2(x+1)^2(x^2+1)^2(x^4+1).\]
Tässä piti osoittaa, että jos \(x\) on pariton, niin \(f/512\) on kokonaisluku. \(\Box\)
Näitten esimerkkien perusteella voidaan päätellä, että jos yliopppilaskirjoituksissa tai matematiikkakilpailuissa esiintyy polynomitehtäviä, on yllättävän suuri todennäköisyys, että tehtävä ratkeaa, kun kokeilee mitä tapahtuu, kun \(x=\pm 1\) tai \(x=\pm 2\).
Yritetään kuitenkin nyt katsoa systemaattisesti, mitä voidaan tehdä silloin kun arvaamalla ei päästä eteenpäin.
Jakolasku
Lähdetään liikkeelle jakolaskusta. Muistetaan ensin, että jos on annettu kokonaisluvut \(m\) ja \(k\), niin on olemassa \(0\le r<k\) ja \(q\) siten, että
\[m=qk+r.\]
Sanotaan, että \(q\) on osamäärä ja \(r\) on jakojäännös. Jos ei olla kiinnostuttu osamäärästä, on tapana merkitä
\[m=r\ \mathsf{mod}\ k\]
Polynomeille voidaan määritellä samantapainen jakolasku:
Jos on annettu polynomit \(f\) ja \(g\), niin on olemassa yksikäsitteiset polynomit \(q\) (osamäärä) ja \(r\) (jakojäännös) siten, että
\[f=qg+r\]
ja \(\mathsf{deg}(r)<\mathsf{deg}(g)\).
Yksikäsitteisyyden osoittamisen jätän harjoitustehtäväksi. Seuraava algoritmi takaa olemassaolon. Olkoon annettu polynomit \(f\) ja \(g\), ja \(\mathsf{LT}(f)=a_nx^n\) ja \(\mathsf{LT}(g)=c_mx^m\); tällöin merkintä \(\mathsf{LT}(g)\big| \mathsf{LT}(f)\) (luetaan: \(\mathsf{LT}(g)\) jakaa \(\mathsf{LT}(f)\):n) tarkoittaa, että \(n\ge m\), jolloin
\[\frac{\mathsf{LT}(f)}{\mathsf{LT}(g)}=\frac{a_n}{c_m}x^{n-m}\]
on hyvin määritelty termi. Seuraava algoritmi laskee osamäärän ja jakojäännöksen.
Algoritmin rivillä 4 jakojäännöksen isoin termi kumoutuu, joten \(\mathsf{deg}(r)\) pienenee joka askeleella. Tämän takia ennemmin tai myöhemmin joko \(r=0\) tai \(\mathsf{deg}(r)<\mathsf{deg}(g)\), jolloin algoritmi tulee ulos while silmukasta, mikä todistaa, että algoritmi päättyy. Algoritmi on itse asiassa käytännössä sama kuin kokonaislukujen jakaminen jakokulmassa.
Yksinkertainen jakolasku on yllättävän tehokas työkalu.
Esimerkki 5. Britannian matematiikkaolympialaisissa vuonna 2007 piti laskea
\[\frac{1+2007^4+2008^4}{1+2007^2+2008^2}.\]
Tietenkin tämän voi laskea suoraan, mutta osoittajaan tulee 14-numeroinen luku, joten tämä olisi hyvin työlästä käsin laskien. Olkoon \(f=1+x^4+(x+1)^4\) ja \(g=1+x^2+(x+1)^2\); jakolasku antaa
\[f=(x^2+x+1)g,\]
joten vastaus on \(1+2007+2007^2=4030057\). \(\Box\)
Esimerkki 6. Baltian tie matematiikkakilpailussa vuonna 1992 oli seuraava tehtävä.
Oletetaan, että \(a^2+b^2+(a+b)^2=c^2+d^2+(c+d)^2\).
Todista, että \(a^4+b^4+(a+b)^4= c^4+d^4+(c+d)^4\).
Olkoon
\[\begin{align*} f&=a^4+b^4+(a+b)^4-c^4-d^4-(c+d)^4,\\ g&=a^2+b^2+(a+b)^2-c^2-d^2-(c+d)^2. \end{align*}\]
Tehtävä voidaan nyt muotoilla seuraavasti.
Jos \(g=0\), niin \(f=0\).
Mutta nythän ratkaisu saadaan heti: väite voi olla totta täsmälleen silloin kun \(g\) on \(f\):n tekijä. Toisin sanoen kun \(f\) jaetaan \(g\):llä, niin jakojäännöksen pitäisi olla nolla.
Nyt tietysti olisi luontevaa ajatella, että \(f\), \(g\in\mathbb{Q}[a,b,c,d]\), koska kaikki muuttujat ovat tavallaan samanarvoisessa asemassa. Mutta jakolaskualgoritmin kannalta voidaan yhtä hyvin ajatella vaikkapa, että \(a\) on “muuttuja”, ja muut ovat “parametreja”, jolloin voidaan ajatella, että \(f\), \(g\in\mathbb{Q}(b,c,d)[a]\).
Nyt jakolaskualgoritmi antaa
\[f=qg=(a^2 + ab + b^2 + c^2 + cd + d^2)g,\]
mikä todistaa väitteen. Vaikeaksi tarkoitettu tehtävä ratkeaa siis algoritmisesti suoraan laskemalla. Huomaa, että tässä tehtävän ainoa vaikeus oli siinä, että piti nimetä polynomit \(f\) ja \(g\). \(\Box\) :::
Yleisesti ottaen polynomitehtävissä ongelma on tapana muotoilla yhtälöitten avulla, eikä oleellisia polynomeja suoraan mainita. Tehtävissä siis aina kannattaa nimetä ne polynomit, joita tarkastellaan. Tuntuu ehkä hassulta, että asioitten nimeäminen “oikein” ratkaisee tehtävän. Tämän voi mieltää niin, että kun polynomit on nimetty, niin automaattisesti tämä ohjaa ajattelua oikeaan suuntaan. Katsotaan vielä toinen esimerkki tällaisesta ilmiöstä.
Esimerkki 7. Matti Lehtisen tehtäväkokoelmassa Kilpailumatematiikan lajeja ja periaatteita oli seuraava tehtävä.
Oletetaan, että
\[\begin{align*} abc=&1,\\ a+b+c=&\frac{1}{a}+\frac{1}{b}+\frac{1}{c}. \end{align*}\]
Osoita, että \(a=1\) tai \(b=1\) tai \(c=1\).
Huomaa, että väite
\[a=1 \text{ tai } b=1 \text{ tai } c=1\]
on ekvivalenttia sen kanssa, että
\[h=(a-1)(b-1)(c-1)=0.\]
Olkoon \(f_0=abc-1\) ja
\[f_1=abc(a+b+c)-ab-ac-bc.\]
Tehtävä voidaan nyt muotoilla seuraavasti.
Oletetaan, että \(f_0=f_1=0\). Osoita, että \(h=0\).
Olkoon edelleen \(\hat f_1=a+b+c-ab-ac-bc\). Jos \(f_0=0\), niin \(\hat f_1=f_1\). Tästä saadaan muotoilu:
Oletetaan, että \(f_0=\hat f_1=0\). Osoita, että \(h=0\).
Mutta nyt heti nähdään, että
\[h=f_0+\hat f_1,\]
mikä todistaa väitteen. \(\Box\)
SYT
Jakolaskun avulla voidaan helposti laskea suurin yhteinen tekijä (gcd, greatest common divisor) polynomeille; algoritmi on tuttu Eukleideen algoritmi, jolla lasketaan kokonaislukujen suurin yhteinen tekjä. Jos on annettu polynomit \(f\) ja \(g\), niin merkitään äskeisen algoritmin antamaa jakojäännöstä \(r=\mathsf{rem}(f,g)\). Lisäksi on kätevää ottaa käyttöön seuraava merkintä: jos \(\mathsf{LT}(f)=a_nx^n\), niin isoimman termin kerroin (leading coefficient) on \(\mathsf{LC}(f)=a_n\).
Koska jakojäännöksen aste pienenee joka askeleella, niin algoritmi päättyy.
Suurimman yhteisen tekijän avulla nähdään, onko kahdella polynomilla yhteisiä nollakohtia; \(f\):llä ja \(g\):llä on yhteisiä nollakohtia, jos \(\mathsf{deg}\big(\mathsf{syt}(f,g)\big)>0\). Tämän selvittäminen on täysin algoritmista, eikä se riipu siitä, osataanko nollakohtia laskea. Jos siis “unohdetaan” algebran peruslause, niin joka tapauksessa on voimassa seuraava tulos.
Olkoon \(f\), \(g\in\mathbb{Q}[x]\). Jos \(\mathsf{syt}(f,g)=1\), niin tehtävällä \(f=g=0\) ei ole ratkaisuja.
Huomaa erityisesti, että tämä ei riipu siitä mistä \(\mathbb{Q}\):n kuntalaajennuksesta ratkaisua etsitään.
Esimerkki 8. Kanadan matematiikkaolympialaisissa vuonna 1988 oli seuraava tehtävä.
Olkoon \(f= 1988x^2+bx + 8891\) ja \(g= 8891x^2+ bx + 1988\); millä \(b\):n arvoilla polynomeilla \(f\) ja \(g\) on yhteinen tekijä?
Tässäkin tehtävä ratkeaa heti, jos huomaa kokeilla, mitä tapahtuu, kun \(x=\pm 1\). Tällöin nähdään heti, että \(b=\pm 10879\) ja vastaava yhteinen tekijä on \(x\pm 1\).
Jos edetään algoritmisesti, niin lasketaan ensin
\[r=\mathsf{rem}(f,g)=\frac{6903}{8891}\big(bx+10879\big)\]
ja sitten
\[r_0=\mathsf{rem}(g,r)=-\frac{8891}{b^2}\big(b^2-118352641\big).\]
Jos on yhteisiä tekijöitä, niin \(r_0=0\), ja tästä saadaan arvaamalla löydetty ratkaisu. \(\Box\)
Esimerkki 9. Pohjoismaisessa matematiikkakilpailussa vuonna 2009 oli seuraava tehtävä.
Olkoon \(f=x^{17} + x^{13} + x^5 - 90x^4 + x - 90\); tiedetään, että \(f\):llä on tekijä \(g=x^2+x+a\). Mikä on \(a\)?
Tässä vaiheessa lukija varmaankin jo arvaa, että \(a=\pm 1\) tai \(a=\pm 2\).
Jos \(g\) on tekijä, niin jakojäännös on nolla. Lasketaan jakojäännös:
\[\begin{align*} f&=qg+r, \quad\mathrm{miss\ddot{a}}\\ &\phantom{m}r=h_1x+h_0\quad\mathrm{ja}\\ &\phantom{m}h_0= -8a^8 + 84a^7 - 258a^6 + 365a^5 - 276a^4 \\ &\phantom{mmmm}+ 114a^3 - 116a^2 + 93a - 90,\\ &\phantom{m}h_1=a^8 - 36a^7 + 211a^6 - 483a^5 + 565a^4\\ &\phantom{mmmm}- 370a^3 + 137a^2 - 209a + 94. \end{align*}\]
Tässä ensin ajatellaan, että \(f\) ja \(g\) ovat \(x\):n polynomeja ja \(a\) on parametri, eli \(f\), \(g\in\mathbb{Q}(a)[x]\), ja sovelletaan jakolaskualgoritmia \(x\):n suhteen. Nyt jakojäännös on \(r=h_1x+h_0\), missä \(h_j\) ovat polynomeja \(a\):n suhteen, ja jakojäännös on nolla, jos polynomeilla \(h_0\) ja \(h_1\) on yhteisiä nollakohtia. Nyt suoraan laskemalla \(\mathsf{syt}(h_0,h_1)=a-2\), joten vastaus on \(a=2\). Laskut ovat helpompia, jos huomaa, että
\[\begin{align*} f&=x^{17} + x^{13} + x^5 - 90x^4 + x - 90\\ &=\big(x^4+1\big)\big(x^{13}+x-90\big). \end{align*}\]
Selvästi \(g\):n täytyy olla polynomin \(\hat f=x^{13}+x-90\) tekijä, ja jakolasku antaa nyt
\[\begin{align*} \hat f&=\hat q g+\hat r\\ &\phantom{m}\hat r=\hat h_1x+\hat h_0\\ &\phantom{m}\hat h_0=-6a^6+35a^5-56a^4+36a^3-10a^2+a-90\\ &\phantom{m} \hat h_1=a^6-21a^5+70a^4-84a^3+45a^2-11a+2. \end{align*}\]
Luonnollisesti edelleen \(\mathsf{syt}(\hat h_0,\hat h_1)=a-2\). \(\Box\)
Neliövapaa polynomi
Palataan sitten kaavaan (2). Jos ollaan ensisijaisesti kiinnostuttu nollakohdista, ja kertaluvut eivät ole niinkään oleellisia, niin voisi olla mukavampi analysoida polynomia
\[f_{\mathsf{red}}=(x-b_1)\cdots(x-b_k).\]
Sanotaan, että \(f_{\mathsf{red}}\) on \(f\):n reduktio, ja että \(f\) on neliövapaa (squarefree), jos \(f=f_{\mathsf{red}}\). Jos \(f\) ei ole neliövapaa, niin \(\mathsf{deg}(f_{\mathsf{red}})<\mathsf{deg}(f)\), joten siirtyminen redusoituun polynomiin alentaa astetta, mikä puolestaan helpottaa tehtävän analyysiä. Mutta miten redusoitu polynomi voitaisiin laskea? Nollakohtiahan ei tunneta.
Jos \(b\) on \(f\):n nollakohta, jonka kertaluku on \(\ell\), niin tällöin voidaan kirjoittaa
\[f=(x-b)^\ell h(x),\]
missä \(h(b)\ne 0\). Mutta tällöin edelleen
\[f'=\ell (x-b)^{\ell-1}h+(x-b)^\ell h'=(x-b)^{\ell-1}\hat h.\]
Toisin sanoen \((x-b)^{\ell-1}\) on \(f\):n ja \(f'\):n tekijä, ja kun tämä tekijä poistetaan \(f\):stä, saadaan
\[f_0=(x-b)h.\]
Tässä päästiin eroon moninkertaisesta nollakohdasta, kun jaettiin \(f\):n ja \(f'\):n tekijällä. Mutta edellä on esitetty algoritmi suurimmalle yhteiselle tekijälle, eikä algoritmissa tarvitse tietää nollakohtia. Siispä
\[f_{\mathsf{red}}=\frac{f}{\mathsf{syt}(f,f')}.\]
Toisella tavalla ajateltuna tässä \(f\) jaetaan kahteen tekijään:
\[f=\mathsf{syt}(f,f') f_{\mathsf{red}}.\]
Usein (tai aina) tehtävä helpottuu, jos löydetään jokin tekijöihin jako, sillä tällöin voidaan tutkia alempiasteisia tekijöitä erikseen.
Esimerkin 4 tapauksessa saadaan \(\mathsf{syt}(f,f')=x^4-1\), joten
\[x^{12}-x^8-x^4+1=(x^4-1)(x^8-1).\]
Tästä on sitten helppo jatkaa tekijöihin jakoa.
Redusoituun polynomiin siirtyminen helpottaa tehtävää jo siinä, että polynomin asteluku pienenee, mutta on itse asiassa toinenkin tärkeä syy, miksi tämä reduktio kannattaa tehdä. Palataan tähän sitten myöhemmin.
wxMaxima, Sage ja Wolfram Alpha
Edellä esitellyt algoritmit on toteutettu varmaankin kaikissa symbolisen laskennan ohjelmistoissa. Esimerkiksi wxMaximassa on komento divide, joka laskee osamäärän ja jakojäännöksen, ja komento gcd, joka laskee suurimman yhteisen tekijän.
Tarkemmin wxMaxima3 on käyttöliittymä Maximaan4. Nämä ovat vapaita ohjelmistoja, ja itse asiassa wxMaximaa voi käyttää ylioppilaskirjoituksissa. Siis kaikki edellä mainitut esimerkkitehtävät olisivat ratkenneet parissa minuutissa, jos ne olisivat olleet ylioppilaskirjoitustehtäviä. Esimerkissä 7 ei tosin tarvinnut jakolaskua, mutta se olisi helposti ratkennut myös toisella tavalla muuttujia eliminoimalla, ja tämäkin onnistuu wxMaximalla. Palataan muuttujien eliminointiin tarkemmin myöhemmin.
Myös Sage on ilmainen ohjelmisto, jolla voi laskea sekä symbolisesti että numeerisesti [1].5 Sagea on ehkä kätevintä käyttää Jupyterin avulla.6
Netissä on lisäksi vapaasti käytettävissä Wolfram Alpha, jonka avulla voi helposti laskea tässä kirjoituksessa olleet esimerkit.7 Tässä on taustalla Mathematica8, joka on maksullinen ohjelma. Toinen hyvä maksullinen ohjelma on Maple.9
Jatkuu ensi numerossa
Ensi kerralla katsotaan tarkemmin polynomien nollakohtien ratkaisemista. Erityisesti tarkastellaan kriittisesti ratkaisukaavoja ja juurilausekkeita ja päädytään siihen, että jos ne eivät ehkä ole täysin hyödyttömiä, niin ainakin niitten merkitystä on vahvasti liioiteltu. Jakolaskualgoritmi sen sijaan osoittautuu edelleen hyödylliseksi työkaluksi.
Viitteet
[1] G. V. Bard, Sage for undergraduates, American Mathematical Society, 2015.
[2] D. A. Cox, J. Little, and D. O’Shea, Ideals, varieties, and algorithms, 4th ed., Undergraduate Texts in Mathematics, Springer, Cham, 2015, An introduction to computational algebraic geometry and commutative algebra.