Vector vol. 23 Nos. 1&2 Contents Editorial Stephen Taylor 2 Sustaining Members News



Download 0.53 Mb.
Page13/31
Date28.01.2017
Size0.53 Mb.
#9422
1   ...   9   10   11   12   13   14   15   16   ...   31

Generalisation


In truth, the expression we just wrote is an example of an algorithm for “changing the frame of reference”. Not to panic, the name is recondite, but the concept is simple: a list of area numbers (the initial set) is translated into a list of discount rates (the final set).

Let us imagine the initial set to be an alphabet composed of lower case and upper case letters, and the final set to be composed of only upper case letters:

Almin
abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ

Almaj
ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ*

Fable ← 'Le petit Chaperon-Rouge a bouffé le Loup'

The expression below converts from lower to upper case.

Almaj[Almin ⍳ Fable]
LE PETIT CHAPERON*ROUGE A BOUFF* LE LOUP

As one might expect, the characters - and é, which are absent from the initial alphabetic set have been replaced by the * of the final set, but the conversion is acceptable. This solution can easily be improved.

Once more, the rational steps to be taken to resolve a computing problem are entirely different from the ways traditionally taught, and the programmer has thereby gained a much more extensive insight.

From Foundation to Structure


Traditional computing languages do not handle tables of numbers. They hold them in memory, but when they are required for processing they can only handle them one number at a time. It is unsurprising in these circumstances, that these languages do not concern themselves with the difference that might result from controlling the shape of the data.

It is quite otherwise with APL, which offers many tools for working with the shape of the data. We shall only look at a few of them.


Take and drop


The functions Take (↑) and Drop (↓) serve, as their name suggests, to take or drop part of a variable. Here we shall show only examples based on vectors, but all the other shapes of data can be treated in a similar way.

Recalling that Vec has values 15 40 63 18 27 40 33 29 40 88

4 ↑ Vec ⍝ take the first 4 items
15 40 63 18

5 ↓ Vec ⍝ drop the first 5 items


40 33 29 40 88

If the left argument is negative, these same functions count from the end of the vector.

¯3 ↑ Vec ⍝ take the last 3 items
29 40 88

¯7 ↓ Vec ⍝ drop the last 7 items


15 40 63

If one drops the last 7 items, it leaves only the first 3, which we could have accomplished with 3↑Vec. To have two functions seems unnecessary. What purpose does this serve?

Let us imagine a business with a turnover which has grown over 12 years. The variable Tome is turnover in Millions of Euros.

Tome
56 59 67 64 60 61 68 73 78 75 81 84

We want to calculate the difference between each year and the next; how to do it?

1↓Tome
59 67 64 60 61 68 73 78 75 81 84

¯1↓Tome
56 59 67 64 60 61 68 73 78 75 81

We see that all that remains is to subtract item from item:

(1↓Tome)-(¯1↓Tome)
3 8 ¯3 ¯4 1 7 5 5 ¯3 6 3

Without a program or loops; all very simple!

In place of a subtraction, one division calculates the rates of growth instead of the differences, with some obvious adjustments:

100 × ((1↓Tome)÷(¯1↓Tome)) – 1


5.35 13.56 ¯4.48 ¯6.25 1.67 11.47 7.35 6.85 ¯3.85 8 3.70

Mirrors and Transpositions


APL is also well endowed with functions which pivot data about any axis, as suggested by the shape of the symbol used. It applies both to numeric and text data; as we are going to show by applying these functions to the variable Towns met above.

Initial
Variable


Reverse left-right
(Mirror)


Reverse
top-bottom (Flip)


Exchange rows & columns
(Transpose)


Towns

⌽Towns

⊖Towns

⍉Towns

Martigues
Paris
Strasbourg
Granville
Nantes
Fréjus

seugitraM
siraP
gruobsartS
ellivnarG
setnaN
sujérF

Fréjus
Nantes
Granville
Strasbourg
Paris
Martigues

MPSGNF
aatrar
rrrané
tiantj
issveu
g biss
u ol
e ul
s re
g

The symbols used ⌽ ⊖ ⍉ are self-describing, no effort is required to remember any of them. They also have dyadic uses, with different but always interesting results.

Back to Primary School


Remember when we learned our multiplication tables. In that practically palaeolithic era, to make sure that we knew all our tables, my instructor made us calculate the multiplication table for the integers 1 to 9:

×

1

2

3

4

5

6

7

8

9

1

1

2

3

4

5

6

7

8

9

2

2

4

6

8

10

12

14

16

18

3

3

6

9

12

15

18

21

24

27

4

4

8

12

16

20

24

28

32

36





You see, I haven’t forgotten! Probably you have done all this just like me. And then we quickly forgot the imposition: thus sidestepping a very powerful tool, one which APL provides, under the name outer product.

The task consists of taking pairs of items of two vectors, (the column and row headings) and making them the left and right arguments of the function at the top left. Then we shall go on to see what we get if we change the values a little:



×

8

5

15

9

11

40

5

40

25

75

45

55

200

4

32

20

60

36

44

160

10

80

50

150

90

110

400

3

24

15

45

27

33

120

This operator is written thus in APL:

5 4 10 3 ∘.× 8 5 15 9 11 40


40 25 75 45 55 200
32 20 60 36 44 160
80 50 150 90 110 400
24 15 45 27 33 120

Now imagine replacing the symbol for multiplication by any of a number of other functions, or programs which you could have defined yourself, and you will understand, as for reduction already encountered, that outer product is an operator of amazing power.



Let’s have fun:

(⍳5)∘.=(⍳5)

(⍳5)∘.<(⍳5)

(⍳5)∘.≥(⍳5)

1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1

0 1 1 1 1
0 0 1 1 1
0 0 0 1 1
0 0 0 0 1
0 0 0 0 0

1 0 0 0 0
1 1 0 0 0
1 1 1 0 0
1 1 1 1 0
1 1 1 1 1

And go on to practical applications.


Directory: issues
issues -> Protecting the rights of the child in the context of migration
issues -> Submission for the Office of the High Commissioner for Human Rights (ohchr) report to the General Assembly on the protection of migrants (res 68/179) June 2014
issues -> Human rights and access to water
issues -> October/November 2015 Teacher's Guide Table of Contents
issues -> Suhakam’s input for the office of the high commissioner for human rights (ohchr)’s study on children’s right to health – human rights council resolution 19/37
issues -> Office of the United Nations High Commissioner
issues -> The right of persons with disabilities to social protection
issues -> Human rights of persons with disabilities
issues -> Study related to discrimination against women in law and in practice in political and public life, including during times of political transitions
issues -> Super bowl boosts tv set sales millennials most likely to buy

Download 0.53 Mb.

Share with your friends:
1   ...   9   10   11   12   13   14   15   16   ...   31




The database is protected by copyright ©ininet.org 2024
send message

    Main page