On 3/30/07, Timothy Hochberg
On 3/29/07, Bill Baxter
wrote: On 3/30/07, Timothy Hochberg
wrote: Note, however that you can't (for instance) multiply column vector with a row vector:
(c)(r) Traceback (most recent call last): ... TypeError: Cannot matrix multiply columns with anything
That should be allowed. (N,1)*(1,M) is just an (N,M) matrix with entries C[i,j] = A[i,0]*B[0,]
I thought about that a little, and while I agree that it could be allowed, I'm not sure that it should be allowed. It's a trade off between a bit of what I would guess is little used functionality with some enhanced error checking (I would guess that usually row*column signals a mistake). However, I don't care much one way or the other; it's not hard to allow.
It's useful for many things. You can use it in the computation of the least squares best fits between sets of points. The sum of p_i p_^t comes up in that context. (Which is also the covariance matrix of the points) The derivative of a unit vector (useful for mass spring dynamics calcs, among other things, I'm sure) is given by something like c * (I - x x^t). Householder reflections are useful for a lot of things such as implementing QR factorization. They're given by : H = I - 2 x x^t / x^t x http://www.cs.ut.ee/~toomas_l/linalg/lin2/node6.html I'm positive I've seen col * row come up in other contexts too, though I can't think of any other particulars right now. --bb