Simo K. Kivelä / 18.08.2010
Mathematica numeerisena ja symbolisena laskimena
Aluksi
Pitkässä istunnossa saattaa aiheutua ongelmia siitä, että muistissa on vanhoja tuloksia talletettuna nimellä, jonka käyttäjä jo on unohtanut tai jonka hän kuvittelee tarkoittavan jotakin muuta. Tämän johdosta kannattaa uuteen tehtävään ryhdyttäessä muisti puhdistaa hieman kryptisellä komennolla:
In[1]:=
Numeerinen laskenta
Numeerisessa laskennassa voidaan käyttää periaatteessa mielivaltaisen monta numeroa. Käytännössä koneen muisti ja laskenta-aika asettavat rajoituksensa. Kertomerkki on joko välilyönti tai *; pois sitä ei voida (yleensä) jättää.
In[2]:=
Out[2]=
Kertoma ilmaistaan tavalliseen tapaan huutomerkillä.
In[3]:=
Out[3]=
Luku π syötetään nimellä Pi tai se voidaan valita valikosta. Funktiolla N sille voidaan laskea haluttu määrä desimaaleja. (Desimaaleja tunnetaan nykyään hieman yli 206 miljardia. Kovin monen desimaalin laskeminen tukkii Mathematican varsin tehokkaasti.)
In[4]:=
Out[4]=
In[5]:=
Out[5]=
In[6]:=
Out[6]=
Laskettuihin arvoihin voidaan myöhemmin viitata prosenttimerkillä:
In[7]:=
Out[7]=
In[8]:=
Out[8]=
Tulos saadaan desimaalilukuna, jos syötteessä esiintyy desimaaliluku. Kaikkialla käytetään desimaalipistettä, ei -pilkkua.
In[9]:=
Out[9]=
In[10]:=
Out[10]=
Aiempiin tuloksiin viittaamisesta tulee helpompaa, jos tuloksille annetaan nimet (mielellään mahdollisimman kuvaavat nimet, jolloin on itsekin helpompi muistaa, mitä mikin symboli tarkoittaa):
In[11]:=
Out[11]=
In[12]:=
Out[12]=
Myös funktioiden arvoja voidaan laskea:
In[13]:=
Out[13]=
In[14]:=
Out[14]=
In[15]:=
Out[15]=
In[16]:=
Out[16]=
Pelkkä prosenttimerkki tarkoittaa edellistä tulosta.
Myös kompleksiluvuilla voidaan laskea:
In[17]:=
Out[17]=
In[18]:=
Out[18]=
In[19]:=
Out[19]=
Symbolinen laskenta
Vastaavalla tavalla voidaan käsitellä algebrallisia lausekkeita, so. lausekkeita, joissa on kirjainsymboleja:
In[20]:=
Out[20]=
Lausekkeita voidaan muokata, esimerkiksi sieventää useilla eri tavoilla. Ei ole itsestään selvää, mitä sievä kussakin tapauksessa tarkoittaa; se riippuu siitä, mitä lausekkeelle on seuraavaksi tarkoitus tehdä. Tämän johdosta sieventämiskomentoja on useita erilaisia eikä niiden hallinta aina ole helppoa. Kunkin komennon argumentti (lauske, johon operaatio kohdistuu) annetaan hakasuluissa. Esimerkkeinä lausekkeen kehittäminen, tekijöihin jako ja ns. osamurtokehitelmän muodostaminen; erilaisia sievennyskomentoja on kuitenkin paljon enemmän.
In[21]:=
Out[21]=
In[22]:=
Out[22]=
In[23]:=
Out[23]=
In[24]:=
Out[24]=
Yleisiä sievennyskomentoja ovat Simplify ja FullSimplify. Mitä nämä tekevät, ei kuitenkaan ole aina selvää:
In[25]:=
Out[25]=
In[26]:=
Out[26]=
In[27]:=
Out[27]=
In[28]:=
Out[28]=
In[29]:=
Out[29]=
In[30]:=
Out[30]=
Funktioiden käsittelyyn liittyy omat sievennyskomentonsa:
In[31]:=
Out[31]=
Kaikki yhden argumentin sievennyskomennot voidaan kirjoittaa myös argumentin jälkeen:
In[32]:=
Out[32]=
In[33]:=
Out[33]=
Derivointi ja integrointi tapahtuvat yksinkertaisesti.
In[34]:=
Out[34]=
In[35]:=
Out[35]=
In[36]:=
Out[36]=
In[37]:=
Out[37]=
In[38]:=
Out[38]=
Mathematica tuntee tavallisten alkeisfunktioiden lisäksi melkoisen määrän myös ns. erikoisfunktioita.
In[39]:=
Out[39]=
Tälle saadaan myös numeerinen arvo:
In[40]:=
Out[40]=
Integrointi voi tapahtua myös numeerisesti:
In[41]:=
Out[41]=
Virheellisiä tuloksia voi kuitenkin yllättäen syntyä. Jos integroidaan symbolisesti ja tuloksesta lasketaan numeerinen arvo, saatetaan joskus saada eri tulos kuin integroimalla suoraan numeerisesti. Useimmiten syyt ovat ymmärrettäviä. Kyseessä voivat esimerkiksi olla monihaaraisen funktion ominaisuudet kompleksialueella, vaikka integrointi tapahtuisikin reaalialueella. Mikään ohjelmisto tuskin on virheetön: uudessa versiossa on uudet virheet. Käyttäjän tulee oppia kriittisyyteen.
Aina eivät sieventämiskomennot kuitenkaan ilman lisämääreitä anna sitä, mitä odottaisi. Syykin voi olla hyvä:
In[42]:=
Out[42]=
In[43]:=
Out[43]=
Onhan esimerkiksi
In[44]:=
Out[44]=
Mutta sieventää voidaan myös väkisin, ts. käyttäjän vastuulla:
In[45]:=
Out[45]=