Simo K. Kivelä / 23.08.2010

Listat; vektorit ja matriisit

In[1]:=

luento4_1.gif

luento4_2.gif

Lista ja sen alkiot

Lista on tärkein Mathematican datatyyppi. Sillä on erilaisia käyttötapoja tavattoman paljon. Ensimmäisenä eteen tulevia ovat erilaiset taulukot ja toisaalta vektorit.

Lista voidaan yksinkertaisimmin muodostaa luettelemalla sen alkiot alkiot aaltosuluissa. Listan alkioihin voidaan viitata antamalla indeksi(t) kaksinkertaisissa hakasuluissa. Joissakin tapauksissa voidaan käyttää myös listaan kohdistettavia funktioita.

In[2]:=

luento4_3.gif

Out[2]=

luento4_4.gif

In[3]:=

luento4_5.gif

Out[3]=

luento4_6.gif

In[4]:=

luento4_7.gif

Out[4]=

luento4_8.gif

In[5]:=

luento4_9.gif

Out[5]=

luento4_10.gif

Listoja voidaan muodostaa Table- ja Range-funktiolla:

In[6]:=

luento4_11.gif

Out[6]=

luento4_12.gif

In[7]:=

luento4_13.gif

Out[7]=

luento4_14.gif

In[8]:=

luento4_15.gif

Out[8]=

luento4_16.gif

Listat voivat olla useampikertaisia ja niiden käsittelyyn on käytettävissä melkoinen määrä funktioita; seuraavassa on vain muutama yksinkertainen esimerkki.

In[9]:=

luento4_17.gif

Out[9]=

luento4_18.gif

In[10]:=

luento4_19.gif

Out[10]=

luento4_20.gif

In[11]:=

luento4_21.gif

Out[11]=

luento4_22.gif

In[12]:=

luento4_23.gif

Out[12]=

luento4_24.gif

Listat työkaluna

Listoja käytetään työkaluina monissa komennoissa. Jos nämä kohdistuvat esimerkiksi useaan yhtälöön, joissa on useita muuttujia tai tuntemattomia, nämä annetaan usein listoina.

In[13]:=

luento4_25.gif

Out[13]=

luento4_26.gif

In[14]:=

luento4_27.gif

Out[14]=

luento4_28.gif

Kun yhtälöiden kuvaajat piirretään samaan kuvioon yhdellä käskyllä, annetaan yhtälöt listana. Piirtokäskyssä muuttujien vaihteluvälit annetaan myös listoina.

In[15]:=

luento4_29.gif

Out[15]=

luento4_30.gif

Yhtälöparia ratkaistaessa yhtälöt annetaan listana, samoin tuntemattomat. Ratkaisu voidaan sijoitta johonkin lausekkeeseen poimimalla listana saatavasta ratkaisusta haluttu alkio.

In[16]:=

luento4_31.gif

Out[16]=

luento4_32.gif

Leikkauspisteiden etäisyydet origosta voidaan laskea varsin yksinkertaisesti:

In[17]:=

luento4_33.gif

Out[17]=

luento4_34.gif

Sama koskee kuvan piirtämistä:

In[18]:=

luento4_35.gif

Out[18]=

luento4_36.gif

Kovin monien rakenteiden pakkaamista samalle riville ei kuitenkaan voi suositella: syntyy herkästi ajatusvirheitä, joiden seurauksena on hämmästyttäviä virheilmoituksia ja käsittämätön tulos.

Vektorit

Vektorit esitetään listoina. Esimerkkinä kaksi avaruusvektoria.

In[19]:=

luento4_37.gif

Out[19]=

luento4_38.gif

In[20]:=

luento4_39.gif

Out[20]=

luento4_40.gif

Vektorioperaatioille on omat symbolinsa: skalaaritulo esitetään pisteellä (tai kahden argumentin funktiolla Dot), vektoritulo funktiolla Cross. Vektorin pituus saadaan funktiolla Norm. Näitä käyttäen voidaan suorittaa vektorialgebran laskuja.

In[21]:=

luento4_41.gif

Out[21]=

luento4_42.gif

In[22]:=

luento4_43.gif

Out[22]=

luento4_44.gif

In[23]:=

luento4_45.gif

Out[23]=

luento4_46.gif

In[24]:=

luento4_47.gif

Out[24]=

luento4_48.gif

In[25]:=

luento4_49.gif

Out[25]=

luento4_50.gif

Oletuksena on, että kulmat ilmaistaan radiaaneissa; asteiden käyttöä varten on valmiiksi määriteltynä vakio Degree:

In[26]:=

luento4_51.gif

Out[26]=

luento4_52.gif

In[27]:=

luento4_53.gif

Out[27]=

luento4_54.gif

In[28]:=

luento4_55.gif

Out[28]=

luento4_56.gif

Tarkistuksen vuoksi vektoritulon pituutta koskeva kaava:

In[29]:=

luento4_57.gif

Out[29]=

luento4_58.gif

Skalaari- eli sisätulo muissa yhteyksissä

Skalaaritulo on käytettävissä myös mille tahansa listoille, joissa on yhtä monta alkiota. Listojen ei siis välttämättä tarvitse olla (2- tai 3-komponenttisia) vektoreita.

Polynomin muodostus:

In[30]:=

luento4_59.gif

Out[30]=

luento4_60.gif

In[31]:=

luento4_61.gif

Out[31]=

luento4_62.gif

In[32]:=

luento4_63.gif

Out[32]=

luento4_64.gif

Matriisit

Matriisit esitetään kaksinkertaisina listoina. Ns. kaksiulotteinen tulostus voidaan saada aikaan kohdistamalla matriisiin funktio MatrixForm.

In[33]:=

luento4_65.gif

Out[33]=

luento4_66.gif

In[34]:=

luento4_67.gif

Out[34]//MatrixForm=

luento4_68.gif

In[35]:=

luento4_69.gif

Out[35]=

luento4_70.gif

In[36]:=

luento4_71.gif

Out[36]//MatrixForm=

luento4_72.gif

Matriisituloa merkitään pisteellä kuten skalaarituloakin:

In[37]:=

luento4_73.gif

Out[37]=

luento4_74.gif

In[38]:=

luento4_75.gif

Out[38]//MatrixForm=

luento4_76.gif

Matriisista voidaan poimia alkioita indeksimekintää käyttäen:

In[39]:=

luento4_77.gif

Out[39]=

luento4_78.gif

In[40]:=

luento4_79.gif

Out[40]=

luento4_80.gif

Matriiseihin voidaan kohdistaa erilaisia funktioita:

In[41]:=

luento4_81.gif

Out[41]//MatrixForm=

luento4_82.gif

In[42]:=

luento4_83.gif

Out[42]=

luento4_84.gif

In[43]:=

luento4_85.gif

Out[43]=

luento4_86.gif

Matriisin ominaisarvojen ja ominaisvektoreiden laskemiseen on valmiit funktiot. Tulokset voivat joskus näyttää hieman yllättäviltä:

In[44]:=

luento4_87.gif

Out[44]//MatrixForm=

luento4_88.gif

In[45]:=

luento4_89.gif

Out[45]=

luento4_90.gif

In[46]:=

luento4_91.gif

Out[46]=

luento4_92.gif

Numeerinen laskeminen onnistuu:

In[47]:=

luento4_93.gif

Out[47]=

luento4_94.gif

In[48]:=

luento4_95.gif

Out[48]=

luento4_96.gif

Root[p,k] on polynomiyhtälön p(x)=0 k:s juuri. Polynomi p on tässä ilmaistu ns. puhtaana funktiona (pure function).

Spikey Created with Wolfram Mathematica 7.0