LinearAlgebra
GetResultShape
return the resulting shape of a Matrix or Vector operation
Calling Sequence
Parameters
Description
Examples
GetResultShape(s1, s2, opn)
s1, s2
-
name; Matrix or Vector shape
opn
name that is one of 'add', 'multiply', 'inverse', or 'transpose'; specifies the operation
The GetResultShape(s1, s2, opn) function returns a list containing a shape name which can be used as the right-hand side of a shape equation when constructing a new Matrix or Vector from one or two other such objects. The empty list signifies no shape (i.e., rectangular shape).
This routine should be used by routines that operate on one or two input Matrices or Vectors, producing a new Matrix or Vector, and that need to set a shape on the resulting object.
The shape parameters, s1 and s2, should be names returned by MatrixOptions or VectorOptions. This routine recognizes the following built-in shapes:
symmetric
skewsymmetric
hermitian
skewhermitian
diagonal
triangular[upper]
triangular[lower]
triangular[upper,unit]
triangular[lower,unit]
Hessenberg[upper]
Hessenberg[lower]
band[l,u]
Note: The shape antisymmetric must be specified as skewsymmetric, and triangular[unit, lower] must be specified as triangular[lower, unit], even though these alternate shape names are accepted by the Matrix constructor.
If a shape name is not recognized (e.g., any user-defined indexing function), GetResultShape returns the empty list.
Note: No special handling is done for the following Matrix and Vector shapes:
unit
scalar
constant
identity
GetResultShape returns a shape that contains the result of the specified operation on input with the specified shape(s). The shape returned is valid for all input objects with the specified shape(s).
Since the dimension of the Matrices or Vectors is not provided, GetResultShape may return the empty list even in cases where a specific shape could be determined. For example, multiplying two banded Matrices together produces a banded Matrix, but it is not possible to determine whether the number of bands would be valid without knowledge of the dimensions of the input Matrices.
This function is part of the LinearAlgebra package, and so it can be used in the form GetResultShape(..) only after executing the command with(LinearAlgebra). However, it can always be accessed through the long form of the command by using LinearAlgebra[GetResultShape](..).
with⁡LinearAlgebra:
A≔RandomMatrix⁡4,shape=triangularupper:
B≔RandomMatrix⁡4,shape=triangularupper:
ShapeA,ShapeB≔op⁡MatrixOptions⁡A,shape,op⁡MatrixOptions⁡B,shape
ShapeA,ShapeB≔triangularupper,triangularupper
ShapeOut≔GetResultShape⁡ShapeA,ShapeB,add
ShapeOut≔triangularupper
GetResultShape⁡band1,3,transpose
band3,1
GetResultShape⁡triangularupper,unit,diagonal,multiply
triangularupper
See Also
Matrix
MatrixOptions
rtable_indexfcn
Vector
VectorOptions
Download Help Document