[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Program refinement
From: |
Rich Shepard |
Subject: |
Program refinement |
Date: |
Sun, 1 Aug 2004 18:00:14 -0700 (PDT) |
I have a working program, but it's far from optimum and certainly not
generalized for a matrix of any arbitrary size. I'd greatly appreciate more
experienced folks suggesting how it should be rewritten to efficiently
handle matrices of different sizes.
The data for the test 6x6 matrix is:
foo =
1.00000 4.00000 3.00000 1.00000 3.00000 4.00000
0.25000 1.00000 7.00000 3.00000 0.20000 1.00000
0.33300 0.14300 1.00000 0.20000 0.20000 0.16700
1.00000 0.33300 5.00000 1.00000 1.00000 0.33300
0.33300 5.00000 5.00000 1.00000 1.00000 0.33300
0.25000 1.00000 6.00000 3.00000 0.33300 1.00000
The octave program, ahp.m, is:
# calculate primary vector using Saaty's method 4 on page 19
foo = load("table-1-2.dat")
# product of row elements and their 6th roots
bar = prod (foo,2);
# calculate 6th root of each element
root1 = bar(1) ^ (1/6);
root2 = bar(2) ^ (1/6);
root3 = bar(3) ^ (1/6);
root4 = bar(4) ^ (1/6);
root5 = bar(5) ^ (1/6);
root6 = bar(6) ^ (1/6);
# normalize column elements
sigmaroot = root1 + root2 + root3 + root4 + root5 + root6;
value1 = root1/sigmaroot;
value2 = root2/sigmaroot;
value3 = root3/sigmaroot;
value4 = root4/sigmaroot;
value5 = root5/sigmaroot;
value6 = root6/sigmaroot;
save -ascii test.output value1 value2 value3 value4 value5 value6
#EOF
TIA,
Rich
--
Dr. Richard B. Shepard, President
Applied Ecosystem Services, Inc. (TM)
<http://www.appl-ecosys.com>
-------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.
Octave's home on the web: http://www.octave.org
How to fund new projects: http://www.octave.org/funding.html
Subscription information: http://www.octave.org/archive.html
-------------------------------------------------------------
- Program refinement,
Rich Shepard <=