Representing mathematical equations

Rustom Mody rustompmody at gmail.com
Mon Oct 6 13:48:39 EDT 2014


On Monday, October 6, 2014 10:52:40 PM UTC+5:30, Dave Angel wrote:
> varun7rs Wrote in message:
> > On Monday, 6 October 2014 15:03:44 UTC+2, Varun  wrote:

> (Deleted all the 8-space quoting. Either use a better email client
>  or remove the extra 7 lines between every line you
>  quote.)

> >> Okay, I forgot to explain them. L is a set of links, dist is a number (distance), bd is the bandwidth and hc is a number as well (hopcount)...different bandwidths, hopcounts and distances for different links...
> >> b(i,x) is what i intend to calculate out of these details...here 'i' could be the head or tail of the link l and x is a node that hosts i

> > Unbelievable. I again forgot to express them
> > L  = [(1,3), (5,7), .....]
> > bd = [23, 34,43.44.....]
> > dist = [3,7,5,7, ....]
> > hc = [2,3,4,1,2,2,...]
> > for every l belonging to L, i could be either 1 or 3 for L[0], similarly for L[1] it could be 5 or 7

> Now it's clear I don't have a clue. L is either a set or a list.
>  Little l is an element of that set, and is either a tuple or is
>  mysteriously subscripted by a boolean at the other end of the
>  expression. ..

As Dave says there are too many loose ends in your spec to make much sense.

Anyway heres a small start to help you start off --
both for cleaning up your spec as well as moving towards an implementation

Take your denominator term: Σ(l∈L) l

You also say "i could be head or tail of l"
Dunno what to make of that 'or'... Toss a coin and choose??

So here are two version that will calculate the denominator for head and for tail

>>> L  = [(1,3), (5,7)]

>>> sum(x for (x,y) in L)
6
>>> sum(y for (x,y) in L)
10

If you need to examine the sub-expressions (always a good idea!), use

>>> (x for (x,y) in L)
<generator object <genexpr> at 0x7fe04025c730>

Whazzat?

>>> list(x for (x,y) in L)
[1, 5]

Or just simply
>>> [x for (x,y) in L]
[1, 5]

You can use that literally in the sum

>>> sum([x for (x,y) in L])
6


>>> sum([(x,y) for (x,y) in L])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'tuple'

Python just expressing that you are goofing off by trying to add tuples
rather than numbers

>>> sum([l for l in L])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'tuple'

Same as above



More information about the Python-list mailing list