[R] Simplify formula for iterative programming
Stefaan Lhermitte
stefaan.lhermitte at biw.kuleuven.be
Fri Jun 3 12:16:28 CEST 2005
Dear R-ians,
I am looking for the simplification of a formula to improve the
calculation speed of my program. Therefore I want to simplify the
following formula:
H = Si (Sj ( sqrt [ (Ai - Aj)² + (Bi - Bj)² ] ) )
where:
A, B = two vectors (with numerical data) of length n
sqrt = square root
Si = summation over i (= 0 to n)
Sj = summation over j (= 0 to n)
Ai = element of A with index i
Aj = element of A with index j
Bi = element of B with index i
Bj = element of B with index j
n is not fixed, but it changes with every run for my program. Therefore
for I am looking for a simplication of h in order to calculate it when
my A and B get extendend by 1 element (n = n + 1).
I know a computional simplified formula exists for the standard
deviation (sd) that is much easier in iterative programming. Therefore I
wondered I anybody knew about analog simplifications to simplify H:
sd = sqrt [ ( Si (Xi - mean(X) )² ) /n ] -> simplified computation ->
sqrt [ (n * Si( X² ) - ( Si( X ) )² )/ n² ]
This simplied formula is much easier in iterative programming, since I
don't have to keep every element of X.
E.g.: I have a vector X[1:10] and I already have caculated Si( X[1:10]²
) (I will call this A) and Si( X ) (I will call this B).
When X gets extendend by 1 element (eg. X[11]) it easy fairly simple to
calculate sd(X[1:11]) without having to reuse the elements of X[1:10].
I just have to calculate:
sd = sqrt [ (n * (A + X[11]²) - (A + X[11]²)² ) / n² ]
This is fairly easy in an iterative process, since before we continue
with the next step we set:
A = (A + X[11]²)
B = (B + X[11])
Can anybody help me to do something comparable for H? Any other help to
calculate H easily in an iterative process is also welcome!
Kind regards,
Stef
More information about the R-help
mailing list