[SciPy-user] howto dot(a, b.T), some a or b coords are zeros
Alan G Isaac
aisaac@american....
Thu Jan 3 08:36:13 CST 2008
On Thu, 03 Jan 2008, dmitrey apparently wrote:
> here's a part of ralg code:
> B is n x n matrix, g, g1, g2 are n x 1 vectors, w is real number
> ###################
> for i in xrange(p.maxIter):
> ...
> g2 = dot(B, g)
> g1 = dot(B, g2)
> ...
> g2 = <getting vector with possible lots of zeros>
> g1 = <some func from g2, with possible lots of zeros>
> g = dot(B, g1)
> B += dot(dot(B,g), g*w) <- here I intend to get some economy
> g = g2.copy()
> ###################
> For some initial iterations, when initial point is infeasible and max
> constraint derivative depends on some coords only (or feasible + objfun
> depends on some coords only), dot(B, g1) has lots of zeros (for example,
> n-1 zeros for box-bound constraints), as well as dot(B, g) or g*w.
> This cases are especially important to ralg-based solver nssolve.
Well when g1 has lots of zeros, you can index the nonzeros
to shorten the computation, as I showed you last time.
In the case you mention, this would be huge.
You have in effect
B = B + w*(B*(B*g1))*(g1.T *B.T)
so exploiting the symmetry of g*g.T would imply other costs.
Cheers,
Alan Isaac
More information about the SciPy-user
mailing list