RE: Matrix Multiplication
- To: mathgroup@smc.vnet.net
- Subject: [mg12305] RE: [mg12259] Matrix Multiplication
- From: R Finley <trfin@umsmed.edu>
- Date: Thu, 7 May 1998 18:51:45 -0400
Hi Des There shouldn't be any problem if you are consistent in your definitions...that is: B = Array[b,{1,2}] rather than B = Array[b,{2}] In the first case A.B will give you the correct 3x2 matrix. RF -----Original Message----- From: Des Penny [SMTP:dpenny@iname.com] To: mathgroup@smc.vnet.net Sent: Tuesday, May 05, 1998 2:30 AM To: mathgroup@smc.vnet.net Subject: [mg12259] Matrix Multiplication Hi Folks: I ran into the following little problem that has me puzzled. I'm trying to multiply a 3x1 matrix and a 1x2 matrix. I should get a 3x2 matrix, but instead I get an error message: In: A=Array[a,{3,1}] Out: {{a[1,1]},{a[2,1]},{a[3,1]}} In: B=Array[b,{2}] Out: {b[1],b[2]} In: A.B Dot::"dotsh": "Tensors \!\({\({a[\(1, 1\)]}\), \({a[\(2, 1\)]}\), \({a[\(3, 1\)]}\)}\) and \!\({\(b[1]\), \(b[2]\)}\) have incompatible shapes." Out: {{a[1,1]},{a[2,1]},{a[3,1]}}.{b[1],b[2]} Of course I can get what I want by: In: A1=Flatten[A] Out: {a[1,1],a[2,1],a[3,1]} In: Outer[Times, A1, B] Out: {{a[1,1] b[1],a[1,1] b[2]},{a[2,1] b[1],a[2,1] b[2]},{a[3,1] b[1],a[3,1] b[2]}} I don't seem to have trouble with any other dimensions e.g. In: A=Array[a,{3,2}] Out: {{a[1,1],a[1,2]},{a[2,1],a[2,2]},{a[3,1],a[3,2]}} In: B=Array[b,{2,4}] Out: {{b[1,1],b[1,2],b[1,3],b[1,4]},{b[2,1],b[2,2],b[2,3],b[2,4]}} In: A.B Out: {{a[1,1] b[1,1]+a[1,2] b[2,1],a[1,1] b[1,2]+a[1,2] b[2,2],a[1,1] b[1,3]+a[1,2] b[2,3],a[1,1] b[1,4]+a[1,2] b[2,4]},{a[2,1] b[1,1]+a[2,2] b[2,1],a[2,1] b[1,2]+a[2,2] b[2,2],a[2,1] b[1,3]+a[2,2] b[2,3],a[2,1] b[1,4]+a[2,2] b[2,4]},{a[3,1] b[1,1]+a[3,2] b[2,1],a[3,1] b[1,2]+a[3,2] b[2,2],a[3,1] b[1,3]+a[3,2] b[2,3],a[3,1] b[1,4]+a[3,2] b[2,4]}} Can anyone explain what's going on? Thanks for your help. Cheers, Des Penny penny@suu.edu