Simo K. Kivelä / 02.09.2010
Funktiot
In[1]:=
Valmiit funktiot
Mathematica tuntee melkoisen joukon valmiita funktioita:
In[2]:=
Out[2]=
In[3]:=
Out[3]=
Nämä ovat joko tavallisia matemaattisia alkeisfunktioita (, sin, cos, log, arctan, ...) tai hieman vähemmän tunnettuja, ns. erikoisfunktiota (erf, Γ, Besselin funktiot, ...)
Mathematican komennot ovat myös luonteeltaan funktioita:
In[4]:=
Out[4]=
In[5]:=
Out[5]=
Käyttäjän määrittelemät funktiot
Käyttäjä voi itse määritellä Mathematicassa omat funktionsa, jotka määrittelyn jälkeen toimivat kuten mitkä tahansa valmiit funktiot. Määrittelyssä on vasemmalla funktion nimi, jossa muuttujien tulee olla ns. muodollisia parametreja. Näiden merkkinä on alaviiva. Tämän jälkeen on merkki := tai =. (Näiden välillä on pieni ero.) Oikealla puolella annetaan funktion lauseke, jossa muodolliset parametrit esiintyvät, mutta jossa ei enää saa käyttää alaviivoja.
In[6]:=
Out[6]=
In[7]:=
Out[7]=
In[8]:=
Out[8]=
In[9]:=
Out[9]=
In[10]:=
Out[10]=
Derivaatalle voidaan käyttää myös lyhyempää merkintää pilkuttamalla tavanomaiseen tapaan:
In[11]:=
Out[11]=
In[12]:=
Out[12]=
In[13]:=
Out[13]=
Pilkkumerkintä soveltuu myös standardifunktioihin:
In[14]:=
Out[14]=
In[15]:=
Out[15]=
Myös usean muuttujan funktioita voidaan määritellä:
In[16]:=
In[17]:=
Out[17]=
Funktiot voidaan myös määritellä paloittain, jolloin argumenttiin liitetään ehto operaattorin /; (Condition) avulla:
In[18]:=
Määrittelyt voidaan antaa yhdellä rivillä kuten edellä, mutta ne voidaan jakaa myös eri riveille.
In[19]:=
Out[19]=
In[20]:=
Out[20]//TableForm=
-1 | -Sin[5] |
![]() |
![]() |
0 | 2 |
![]() |
![]() |
1 | e |
Vaihtoehtoinen tapa funktion määrittelemiseen on funktion Function käyttö:
In[21]:=
Out[21]=
In[22]:=
Out[22]=
Myös usean muuttujan funktiot ovat mahdollisia eikä arvojenkaan tarvitse olla lukuja:
In[23]:=
Out[23]=
In[24]:=
Out[24]=
Funktiomäärittelylle on lyhyempikin tapa, joka on käyttökelpoinen varsinkin ohjelmakoodia kirjoitettaessa: muuttuja merkitään symbolilla # (tai usean muuttujan tapauksessa #1, #2, ...) ja määrittely päätetään merkkiin &. Esimerkiksi:
In[25]:=
Out[25]=
In[26]:=
Out[26]=
In[27]:=
Out[27]=
In[28]:=
Out[28]=
Rekursiiviset määrittelyt
Funktiomäärittelyt voivat olla myös rekursiivisia. Esimerkiksi Fibonacci'n luvut voidaan määritellä seuraavasti.
Aluksi määritellään kaksi alkuarvoa
In[29]:=
Out[29]=
In[30]:=
Out[30]=
ja tämän jälkeen rekursiivisesti loput, ts. ilmoitetaan, että seuraava on aina kahden edellisen summa:
In[31]:=
Kysymysmerkillä voidaan katsoa, millainen määrittely funktiolle a on tallentunut:
In[32]:=
|
Määritelmän perusteella voidaan laskea lista Fibonacci'n lukuja:
In[33]:=
Out[33]=
Sama määrittely voidaan antaa hieman erilaisessa muodossa, jolloin laskenta nopeutuu oleellisesti. Tämän valossa voi pohtia operaattoreiden := ja = välistä eroa. Näillä kuten kaikilla Mathematican symboleilla on myös nimet: Set ja SetDelayed.
In[34]:=
In[35]:=
|
Laskentanopeudessa on todellakin huomattava ero:
In[36]:=
Out[36]=
In[37]:=
Out[37]=
Funktio Timing antaa paitsi tuloksen myös sen laskemiseen käytetyn ajan.