contents.gifindex.gifprev1.gifnext1.gif

dolist and domatrix

After a function has been defined, it can be applied to a list of argument values even if the function is not defined for lists. This is accomplished using the dolist and domatrix keywords. These statements have the format

dolist f(x,y)
domatrix f(x,y)

For example, assume you have defined the function

Quad(x):=x*x+5x+3

Next, assume you want to apply this function to every element in the list named Points:

Points:=[1,2,3,4,5]

You do this with the expression

dolist Quad(Points)

Which will produce the result [9,17,27,39,53].

If the function you supply accepts only one argument, f(x), dolist and domatrix do the same thing. That is,

dolist f(a)   = [f(a[0]),f(a[1]),f(a[2]),...]
domatrix f(a) = [f(a[0]),f(a[1]),f(a[2]),...]

For example,

dolist F(1..4) = [F(1),F(2),F(3),F(4)]

If the function you supply accepts more than one argument, f(x,y), domatrix causes all permutations of all arguments to be applied while dolist treats the argument lists as parallel. That is,

dolist f(a,b) = [
f(a[0],b[0]),
f(a[1],b[1]),
f(a[2],b[2]),
...
]

domatrix f(a,b) = [
[f(a[0],b[0]),f(a[0],b[1]),f(a[0],b[2]),...],
[f(a[1],b[0]),f(a[1],b[1]),f(a[1],b[2]),...],
[f(a[2],b[0]),f(a[2],b[1]),f(a[2],b[2]),...],
...
]

For example, if you define f(x,y) as

Multiply(x,y):=x*y

then, the expression

dolist Multiply(1..10,1..10)

produces the 10-element vector

  1
  4
  9
25
36
49
64
81
100

However, the expression

domatrix Multiply(1..10,1..10)

produces the 100-element matrix

1    2    3    4    5    6    7    8    9   10  
2    4    6    8   10   12   14   16   18   20  
3    6    9   12   15   18   21   24   27   30  
4    8   12   16   20   24   28   32   36   40  
5   10   15   20   25   30   35   40   45   50
6   12   18   24   30   36   42   48   54   60  
7   14   21   28   35   42   49   56   63   70  
8   16   24   32   40   48   56   64   72   80  
9   18   27   36   45   54   63   72   81   90  
10   20   30   40   50   60   70   80   90  100

The dolist and domatrix keywords can be used with any functions including primitives and user-defined functions. In addition, the list arguments can contain other lists or matrices as elements. That is, dolist F([A,B,C]) = [F(A),F(B),F(C)] even if A, B, and C are themselves lists or matrices.

  Budgeting and Forecasting  |  Strategic Plan  |  Decision Support
Decision Tree Software  |  Monte Carlo Simulations  |  Risk Analysis
Portfolio Management  |  Expert System  |  Website Surveys

Contact Us  |  Terms of Use  |  Privacy Policy  |  Site Map
Vanguard Software
© 2008 Vanguard Software Corporation
Forecasting & Planning Solutions
Home Products Solutions Services Customers Partners Company
Vanguard
Applying science to business management
Vanguard
Print this page   Email this page to a friend