AxB=B ????


by yazid12111980
Tags: axbb
yazid12111980
yazid12111980 is offline
#1
Sep6-11, 08:53 AM
P: 3
Hello, This my first post .. I hope to find someone can help me.

My question:
Assume that we have a 3x3 matrix B, is there a matrix A such that

AxB=B

??

Thanks
Phys.Org News Partner Science news on Phys.org
Internet co-creator Cerf debunks 'myth' that US runs it
Astronomical forensics uncover planetary disks in Hubble archive
Solar-powered two-seat Sunseeker airplane has progress report
micromass
micromass is online now
#2
Sep6-11, 08:56 AM
Mentor
micromass's Avatar
P: 16,703
Take A the identity matrix. That is, take

[tex]A=\left(\begin{array}{ccc} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1 \end{array}\right)[/tex]
yazid12111980
yazid12111980 is offline
#3
Sep6-11, 08:57 AM
P: 3
I tried that .. it doesnt work for cross product !!

yazid12111980
yazid12111980 is offline
#4
Sep6-11, 09:03 AM
P: 3

AxB=B ????


Its not a multiplication .. its a cross product. For example:

A =

1 2 3
4 5 6
7 8 9

>> B=eye(3)

B =

1 0 0
0 1 0
0 0 1

>> cross(B,A)

ans =

0 8 -6
-7 0 3
4 -2 0

???
micromass
micromass is online now
#5
Sep6-11, 09:09 AM
Mentor
micromass's Avatar
P: 16,703
So, how do you define the cross product for matrices??
Bloodthunder
Bloodthunder is offline
#6
Sep6-11, 10:57 AM
P: 174
This is a pretty good website to show you how to do matrix multiplication. Put in the matrices and they'll show you the working.

http://easycalculation.com/matrix/ma...iplication.php
D H
D H is offline
#7
Sep6-11, 11:48 AM
Mentor
P: 14,483
Quote Quote by yazid12111980 View Post
Its not a multiplication .. its a cross product.
I would double check on that if I were you. The standard definition of AB is that of matrix multiplication:

[tex](A\times B)_{ij} = \sum_k A_{ik} B_{kj}[/tex]

Interpreting AB to mean Matlab's cross(A,B) when A and B are matrices is extremely non-standard.
Sillerpojken
Sillerpojken is offline
#8
Sep6-11, 11:50 AM
P: 1
Cross products for matrices can be done in Matlab, and it seems to be defined as several cross products in the matrix. Are you sure this is what you want? I have never seen this before. AxB has always been ordinary matrix multiplication.
Simon_Tyler
Simon_Tyler is offline
#9
Sep6-11, 06:24 PM
P: 313
@Yazid: I'm not sure there is even a sensible way to define a cross product for matrices in 3 dimensions. The closest you can probably get to it is just the matrix commutator. It's a antisymmetric product that takes two matrices and returns a matrix.

Then [A,B] = B is basically an eigenvalue problem for the adjoint representation of A...
where you've been given an eigenvector (B) and need to find an operator (ad(A)) with that eigenvector.
Simon_Tyler
Simon_Tyler is offline
#10
Sep6-11, 07:02 PM
P: 313
Actually, matlab does cross products on arrays of 3d vectors.
It works something like (I don't have matlab, so I can't be sure)

So if A = (a1,a2,...,an) and B=(b1,b2,...,bn) with ai and bi 3d vectors, then

cross(A,B) = ( cross(a1,b1), cross(a2,b2), ..., cross(an,bn) )

In Mathematica, the example provided can be written as

A = {{1, 2, 3}, 
     {4, 5, 6}, 
     {7, 8, 9}};
B = IdentityMatrix[3];

Transpose[Table[Cross[Transpose[B][[i]], Transpose[A][[i]]], {i, 3}]]
(* Output: 
{{ 0,  8, -6}, 
 {-7,  0,  3}, 
 { 4, -2,  0}}
*)
So for n=3, the original problem becomes

cross(A,B)=B ==> (a1xb1, a2xb2, a3xb3) = (b1, b2, b3)

which requires that aixbi=bi, something that is never true...
pwsnafu
pwsnafu is offline
#11
Sep6-11, 08:30 PM
Sci Advisor
P: 779
Quote Quote by Simon_Tyler View Post
In Mathematica, the example provided can be written as
I'd use the Thread command myself.
Simon_Tyler
Simon_Tyler is offline
#12
Sep6-11, 09:06 PM
P: 313
@pwsnafu

I couldn't get Thread to work without Cross complaining about its arguments - although the error messages can be suppressed. Overall, I found that a combination of Apply at level 1 (@@@) the fastest, but not by much. Table is definitely the clearest to someone who is not used to functional programming.

Here's some timings using my custom TimeAv function. The FullForm of Transpose, instead of its typeset form, definitely makes the whole thing less readable...

In[1]:= A = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
        B = IdentityMatrix[3];

In[3]:= SetOptions[TimeAv, Method -> {"MinNum", 10000}, "BlockSize" -> 1000];

In[4]:= Transpose[Table[Cross[Transpose[B][[i]], Transpose[A][[i]]], 
                  {i, 3}]] // TimeAv

During evaluation of In[4]:= Total wall time is 4.817133, 
total cpu time is 4.07 and total time spent evaluating the expression is 4.07

During evaluation of In[4]:= The expression was evaluated 10000 times, 
in blocks of 1000 runs. This yields a mean timing of 0.000407 
with a blocked standard deviation of 7.81025*10^-6.

Out[4]= {0.000407, {{0, 8, -6}, {-7, 0, 3}, {4, -2, 0}}}

In[5]:= Transpose[Apply[Cross, Transpose[{Transpose[B], Transpose[A]}], 
                        {1}]] // TimeAv

During evaluation of In[5]:= Total wall time is 3.847493, 
total cpu time is 3.85 and total time spent evaluating the expression is 3.85

During evaluation of In[5]:= The expression was evaluated 10000 times, 
in blocks of 1000 runs. This yields a mean timing of 0.000385 
with a blocked standard deviation of 5.*10^-6.

Out[5]= {0.000385, {{0, 8, -6}, {-7, 0, 3}, {4, -2, 0}}}

In[6]:= Quiet[Transpose[Thread[Cross[Transpose[B], Transpose[A]]]], 
              Cross::nonn1] // TimeAv

During evaluation of In[6]:= Total wall time is 4.462055, 
total cpu time is 4.46 and total time spent evaluating the expression is 4.46

During evaluation of In[6]:= The expression was evaluated 10000 times, 
in blocks of 1000 runs. This yields a mean timing of 0.000446 
with a blocked standard deviation of 9.16515*10^-6.

Out[6]= {0.000446, {{0, 8, -6}, {-7, 0, 3}, {4, -2, 0}}}


Register to reply