I am fairly new to Mathematica but I thought I would be a helpful tool to carry out a few simple linear algebra calculations. It seems like an easy task but I cannot figure out how to do it. For example, say I want to multiply two matrices composed of sub-matrices:
P := {{P1, P12}, {P12\[Transpose], P2}}; Q := {{Q1, Q12}, {Q12\[Transpose], Q2}};
P.Q
but it returns:
{{P1 Q1 + P12 Transpose[Q12], P1 Q12 + P12 Q2},
{Q1 Transpose[P12] + P2 Transpose[Q12], P2 Q2 + Q12 Transpose[P12]}}
How can I get a non-commutative result (e.g. the bottom left element should be P12\[Transpose] Q1
)? Also, how do I get it to show the little transpose 'T' instead of writing it out?
I found similar questions posted:
Can Mathematica do symbolic linear algebra?
https://stackoverflow.com/questions/5708208/symbolic-matrices-in-mathematica-with-unknown-dimensions
but I'm not trying to do anything as complicated as those.
Answer
Searke hints at the answer. Remembering that the dot product is a specific form of Inner
:
Inner[Times,P,Q,Plus]
We can simply replace Times
wtih NonCommutativeMultiply
Inner[NonCommutativeMultiply, P, Q, Plus]
With the output:
{
{P1 ** Q1 + P12 ** Transpose[Q12],P1 ** Q12 + P12 ** Q2},
{P2 ** Transpose[Q12] + Transpose[P12] ** Q1, P2 ** Q2 + Transpose[P12] ** Q12}
}
Comments
Post a Comment