I have a block matrix of the form A = {{IdentityMatrix[n], a, 0},{-IdentityMatrix[n], 0, b}}, where a and b are n-length column vectors. Even if I input assumptions defining the dimensions of a and b, i.e.
$Assumptions = a \[Element] Vectors[n, Reals]&& b \[Element] Vectors[n, Reals]
when I do a calculation like A.Transpose[A], I still end up entries like a^2, which shows it is treating a and b as scalars instead of vectors.
I don’t want to explicitly define the elements of a or b using other variables and combine everything with ArrayFlatten[], because I’d like to keep the results in terms of high-level operations, such as matrix multiplication, inverse, transpose, etc. Is there any way to achieve this?
This construct A = {{IdentityMatrix[n], a, 0},{-IdentityMatrix[n], 0, b}} can not be transposed because it is not rectangular. Even the transformation behaviour of the elements in one super-row, i.e. {matrix, vector, scalar} does not fit. All this does not fit into the framework of multi-linear algebra. If A is intended as block matrix, then the vector a and the scalar 0 must be replaced by matrix blocks.
I don’t think you’re getting the thrust of my question. Yes, if I define a as a = Transpose[{{a1, a2, a3}}] and do the same for b and define n as 3 and use ArrayFlatten[] so that the scalar 0 is expanded into a column vector, WolframAlpha will be able to calculate with my matrix. I know how to do that, and it’s not what I want, because if the answer includes a.a, what WolframAlpha will give me instead is a1^2 + a2^2 + a3^2, and now I have to do some difficult factorization to translate those scalar operations back into more compact and readable matrix operations. Make sense?
I would also like note here that that the matrix I wrote can be transposed, as written. Since n is undefined, IdentityMatrix[n] is left in symbolic form. Here’s the result of Transpose[A].A, split over multiple lines for readability:
I would actually be fine with this, if the symbolic multiplications were treated as non-commutive, e.g. b.a instead of a b, but because they’re not, I can’t trust any further calculations done this way.