lauantai 16. helmikuuta 2019

Sieventäminen ei aina mene niin kuin luulisi

GeoGebran CAS

Potenssilausekkeen (herätteenä K. Väisälän algebran kirjan harjoitustehtävä, joskaan ei ihan tässä muodossa)
\[
x^{1+n} (x^{n-1})^n (x^n)^{-n}
\]
sieventäminen on useimmille lukiolaisille yksinkertainen juttu: tulos on $x$. GeoGebrakin sieventää sen ongelmitta: pelkän lausekkeen syöttäminen tosin antaa kesken jääneen tuloksen mutta lausekkeen uudelleen kutsuminen (tai suoraan Simplify/Sievennä-komennon käyttö) antaa tuloksen $x$.

Mathematica ei kuitenkaan suostu sieventämään lauseketta Simplify-komennolla, vaan palauttaa sen muuttumattomana. Mitä tästä pitäisi ajatella? Sievennys kyllä onnistuu, jos asetetaan sopiva lisäehto, esimerkiksi Simplify[lsk,x>0] tai Simplify[lsk,Element[n,Integers]], missä lsk tarkoittaa kyseistä lauseketta ja komennon jälkimmäinen argumentti määrittelee $x$:n positiiviseksi reaaliluvuksi tai $n$:n kokonaisluvuksi. Eikö sievennys pädekään rajoituksitta?

Mathematican oletuksena on, että symbolit ovat kompleksilukuja (joiden osajoukkona tietenkin ovat reaaliluvut). Tällöin siis $x$, $n$ tai laskennan välitulokset voivat olla kompleksilukuja, ellei toisin ilmoiteta. GeoGebra sen sijaan ei kompleksilukualgebraa kaikissa suhteissa käytä eikä ota huomioon mahdollisia kompleksiarvoja.

Onko sitten olemassa joitakin arvoja luvuille $x$ ja $n$, joilla lausekkeen arvo ei olekaan $x$?  Ehkä helpoin tapa lähteä tutkimaan asiaa on ajatella lauseke kahden muuttujan, $x$ ja $n$ funktioksi ja piirtää sen kuvaaja, ts. kolmiulotteisen avaruuden pinta. Tähän on olemassa komento, ja tulos on oheisen kuvan mukainen. Mitä ovat pinnan liuskat ja niiden välissä olevat tyhjät tilat?

Plot3D[lsk, {x, -2, 2}, {n, -5, 5}]

Komento Plot3D piirtää reaaliarvoisten funktioiden kuvaajia. Jos arvo on jossakin pisteessä kompleksinen, se jätetään yksinkertaisesti piirtämättä. Lausekkeen reaaliosa ja imaginaariosa ovat kuitenkin reaaliarvoisia:

Plot3D[Re[lsk], {x, -2, 2}, {n, -5, 5}]

Plot3D[Im[lsk], {x, -2, 2}, {n, -5, 5}]

Vaikuttaa siis siltä, että esimerkiksi arvolla $n = -1/5$ funktion arvot ovat kompleksisia, jos $x < 0$. Näin onkin. Arvoksi saadaan Mathematicalla laskettuna
\[
\left(\frac{\sqrt{5}-1}{4} - i\sqrt{\frac{\sqrt{5}+5}{8}}\right)x.
\]
Jos $n = -1/2$ ja $x < 0$, tulos on $-x$.

Lukija ehkä kysyy, miten murtopotenssit — tai niiden päähaarat — on tällöin määritelty ja voiko olla varma, että Mathematica laskee oikein. Tai että ylipäätään jokin laskentaohjelma laskee oikein. Varovaisuus on paikallaan. Mikään ihmisen tekemä ei yleensä ole täysin virheetöntä eivätkä määritelmätkään ole aina samoja. Saman laskun voikin varmuuden vuoksi laskea useammalla ohjelmalla. Ihan itse käsin laskeminen on lisäksi opettavaista, mutta saattaa olla työlästä eikä sekään aina virheetöntä.

Onko edellä oleva sitten laskettu oikein? Ainakin Matlab-klooni Octave laskee samoin.

Ei kommentteja: