• No results found

B¨ orja r¨ akna

4.1 B¨ orja r¨ akna

4.1.1 Octave som en r¨aknedosa

Enklare matematiska operationer g¨ors precis som p˚a en vanlig r¨aknedosa (med normal, dvs ej omv¨and polsk notation `a la HP-r¨aknare) med den lilla skillnaden att vi trycker p˚a enter ist¨allet f¨or ”=” n¨ar vi vill ber¨akna resultatet. Pr¨ova t ex att ber¨akna 2+2:

> 2 + 2 ans = 4

4.1.2 Operatorer

F¨or aritmetik har Octave de vanliga operatorerna (och en litet ovanlig ):

+ Addition - Subtraktion

? Multiplikation / Division

\ V¨ansterdivision1

∧ Exponentiering, till exempel x∧2 = x2

’ Komplex konjugering och transponering ( ) Paranteser f¨or att definiera prioritetsordning

Prioritetsordningen mellan operatorerna ¨ar den normala s˚a att n¨ar man till exempel skriver 3 * 4 + 3*2 ∧3 s˚a ber¨aknas f¨orst, 23, d¨arefter de b¨agge produkterna och sedan summan.2

4.1.3 Variabler

I Octave kan man liksom i alla h¨ogniv˚aspr˚ak definiera variabler, och tilldela dessa v¨arden.

Dels underl¨attar det arbetet genom att man inte beh¨over upprepa inmatning av samma v¨arde fler g˚anger, dels g¨or det instruktionerna enklare att f¨olja och f¨orst˚a - ˚atminstone om man v¨aljer namn p˚a variablerna som ¨ar begripliga. Antag som ett exempel att en l¨askeblask kostar 10 kronor, en varmkorv 12 och en kaffe 4. Om d˚a Kalle k¨oper en korv och fyra kaffe, Lisa en l¨askeblask och tv˚a korvar och Ludde tre korvar och tv˚a l¨askeblask, s˚a kan vi r¨akna ut vad var och en fick betala p˚a f¨oljande s¨att (minns att varje rad m˚aste avslutas med enter

1ansterdivision f¨orklaras i avsnitt 5.2.2

2Notera att Octave ignorerar mellanslag i alla uttryck. Det spelar allts˚a ingen roll om vi skriver 2+3+4*5 eller 2 + 3 + 4*5 eller 2 + 3 + 4 * 5. F¨or att det skall bli enklare att f¨olja uttrycken s˚a ¨ar det mellersta s¨attet att skriva (som ansluter till prioritetsordningen) att f¨oredra.

28 KAPITEL 4. KOMMA IG˚ANG MED OCTAVE f¨or att Octave skall utf¨ora kommandot):

> laskeblask = 10

> Ludde = 3*korv + 2 *laskeblask Ludde =

56

I exemplet ovan ¨ar laskeblask, korv, kaffe, Kalle, Lisa och Ludde alla variabler. Variabler kan allts˚a tilldelas v¨arden antingen explicit (uttryckligen) genom t ex korv = 12, eller genom en ber¨akning som t ex Kalle = 2*korv + 4*kaffe.

Observera att man som alltid m˚aste vara noga med syntaxen, eller programmeringsspr˚akets grammatik. Det g˚ar inte att skriva

> Dyrt = 3 korv

Prova! Du kommer att f˚a ett prov p˚a hur Octave v¨anligt, men inte s¨arskilt diskret hj¨alper en tillr¨atta n¨ar man f˚ar syntaxen fel. Gl¨ommer man bort vad en l¨ask kostar kan vi fr˚aga Octave:

> laskeblask laskeblask = 10

En fallgrop man f˚ar akta sig f¨or ¨ar att variabler vars v¨arde ber¨aknas, som t ex Kalle ovan beh˚aller det v¨arde som variabeln tilldelats senaste g˚angen den ber¨aknas, ¨aven om en av de variabler som ing˚ar n¨ar man ber¨aknar variabelns v¨arde ¨andras. Ett exempel:

> korv = 14 Ludde ber¨aknades g¨allde det gamla v¨ardet p˚a korv och v¨ardet p˚a Ludde f¨orblir of¨or¨andrat s˚a l¨ange vi inte r¨aknar om det med

> Ludde = 3 * korv + 2 * laskeblask Ludde =

62

Variabelnamn i Octave m˚aste b¨orja med en bokstav, f¨oljd av en godtycklig kombination av bokst¨aver (ej ˚a, ¨a eller ¨o), siffror eller understrykning ( ), ett variabelnamn kan allts˚a inte

4.1. B ¨ORJA R ¨AKNA 29 inneh˚alla mellanslag. Octave ser skillnad p˚a stor och liten bokstav, ALLA, Alla och alla ¨ar allts˚a tre olika variabler. Om man vill skapa variabelnamn som ¨ar sammans¨attningar av mer

¨

an ett ord finns tv˚a konventioner: antingen binder man ihop med ett understrykningstecken, eller ocks˚a skriver man med sm˚a bokst¨aver, men inleder nya ord med versal. Allts˚a antingen lagsta strom eller LagstaStrom. Vilket du v¨aljer att g¨ora ¨ar godtyckligt, men det ¨ar bra om man f¨ors¨oker att h˚alla sig till ett s¨att att skriva. Det ¨ar ju enkelt att komma ih˚ag att variabeln ¨ar ”l¨agsta str¨om”, men om man p˚a vissa st¨allen skriver lagsta strom och p˚a andra LagstaStrom s˚a kommer man att h¨anvisa till olika variabler p˚a olika st¨allen i sin kod. Man b¨or d¨arf¨or best¨amma sig f¨or en konvention och sedan h˚alla sig till den. Det kan ocks˚a vara bra att undvika de svenska bokst¨averna ¨aven om det program man arbetar med st¨oder dessa.

N¨ar man skriver m˚anga program skaffar man sig vanor, och det ¨ar bra om vanorna fungerar i s˚a m˚anga olika sammanhang som m¨ojligt.

4.1.4 Konstanter

Octave har ett antal inbyggda konstanter:

pi konstanten π = 3.14159265...

i roten ur -1.

j samma som i.

eps 2−52 den minsta relativa skillnaden mellan tv˚a rationella tal,

eller uttryckt p˚a annat s¨att: det minsta tal man kan addera till 1 och f˚a ett tal som ¨ar st¨orre ¨an 1.

realmin 2−1022, det minsta reella talet som kan representeras p˚a datorn.

realmax 21024-1, det st¨orsta reella talet som kan representeras p˚a datorn.

Inf O¨andligheten som resultat av en v¨al definierad matematisk operation, t ex 10/0.

NaN Icke definierat (Not a Number), t ex resultatet av en operation d¨ar resultatet inte ¨ar definierat, t ex 0/0 eller Inf - Inf.

ans Resultatet av det senaste kommandot.

Av dessa kommer vi kanske inte att anv¨anda mer ¨an pi (och m¨ojligen ans) i den h¨ar kursen, men det ¨ar bra att veta att de finns, i vissa l¨agen kan Octave komma att anv¨anda dem i felmeddelanden och d˚a ¨ar det bra att veta vad till exempel NaN st˚ar f¨or.

Vi har h¨ar valt att kalla dessa tal f¨or ”konstanter” eftersom det ¨ar s˚a vi betraktar och anv¨ander dem. Rent tekniskt ¨ar de dock implementerade som inbyggda funktioner vilket har som en konsekvens att man kan definiera om dem:

> pi pi = 3.1415

> pi = 4.75 pi = 4.7500

De ¨ar dock litet mer stabila ¨an vanliga variabler av typ Kalle som vi sj¨alva definierar. En variabel vi har definierat kan tas bort s˚a att Octave inte l¨angre minns n˚agot om dem genom att ge commandot clear:

> clear Kalle

G¨or vi samma sak med en av ”konstanterna” i tabellen ovan s˚a ˚aterst¨alls v¨ardet till det f¨ordefinierade som visas i tabellen.

30 KAPITEL 4. KOMMA IG˚ANG MED OCTAVE