Computing complex math equations in python
- by dassouki
Are there any libraries or techniques that simplify computing equations ?
Take the following two examples:
F = B * { [ a * b * sumOf (A / B ''' for all i ''' ) ] / [ sumOf(c * d * j) ] }
where:
F = cost from i to j
B, a, b, c, d, j are all vectors in the format [ [zone_i, zone_j, cost_of_i_to_j], [..]]
This should produce a vector F [ [1,2, F_1_2], ..., [i,j, F_i_j] ]
T_ij = [ P_i * A_i * F_i_j] / [ SumOf [ Aj * F_i_j ] // j = 1 to j = n ]
where:
n is the number of zones
T = vector [ [1, 2, A_1_2, P_1_2], ..., [i, j, A_i_j, P_i_j] ]
F = vector [1, 2, F_1_2], ..., [i, j, F_i_j]
so P_i would be the sum of all P_i_j for all j and Aj would be sum of all P_j for all i
I'm not sure what I'm looking for, but perhaps a parser for these equations or methods to deal with multiple multiplications and products between vectors?
To calculate some of the factors, for example A_j, this is what i use
from collections import defaultdict
A_j_dict = defaultdict(float)
for A_item in TG: A_j_dict[A_item[1]] += A_item[3]
Although this works fine, I really feel that it is a brute force / hacking method and unmaintainable in the case we want to add more variables or parameters. Are there any math equation parsers you'd recommend?
Side Note: These equations are used to model travel. Currently I use excel to solve a lot of these equations; and I find that process to be daunting. I'd rather move to python where it pulls the data directly from our database (postgres) and outputs the results into the database. All that is figured out. I'm just struggling with evaluating the equations themselves.
Thanks :)