Error, (in rtable/Product) invalid arguments
For users of Maple 18 and earlier versions: This error is caused when the asterisk (*) is used for multiplying together Matrices or Vectors. Only a dot (period, or .) should be used in this case.
When you type an asterisk while in 2-D Math mode, this is displayed as a center dot ⋅ representing the commutative multiplication operator. In contrast, when you type the period, this is displayed as a lower dot . representing the dot operator, used for non-commutative or dot-product multiplication. The center dot is intended for scalar multiplication (including scalars multiplied with Vectors and Matrices), but not for non-commutative or dot-product multiplication. This is why the dot operator is needed for multiplying Vectors or Matrices together.
2-D Math is used throughout this help page (unless otherwise noted) so that examples using implicit multiplication (a space) can be shown.
M ≔ 1,2|3,4
V ≔ 5,6
In this first example, M and V are assigned to a Matrix and Vector. When multiplication is attempted using the center dot, an error is returned. Here is the equivalent example using 1-D Maple Input (which shows the underlying Maple syntax):
To fix the problem, the dot operator (period) should be used instead of the center dot (asterisk):
Here is the same solution using 1-D Maple Input:
f ≔ a,b → a b:
Since Maple does not know that a and b are Matrices when the procedure is defined, it inserts the commutative multiplication operator (asterisk) internally where the space has been used for implicit multiplication. When a and b are then defined as Matrices, it returns an error because this operator cannot be used for multiplication of Matrices together.
Use the dot operator to perform explicit multiplication. Here is a similar procedure that returns the expected result:
g ≔ a,b→a.b:
Note that implicit multiplication does work for Matrices and Vectors outside a procedure or operator body. In the following examples, M and V are already defined as Matrices, so Maple correctly interprets the space to perform implicit multiplication of the Matrices together.
This is why it is common for people to attempt implicit multiplication inside a procedure. However, as can be seen in Example 2, those attempts fail and return an error.
Implicit multiplication should always work if the items are already Matrices or Vectors. Outside of a procedure body, implicit multiplication will fail when multiplying together function calls that are intended to return Matrices and Vectors but which have not yet been computed. In this example, the 2-D Math parser did not know what type of objects the f and g function calls would return.
Again, use the dot operator to perform explicit multiplication.
examples/LA_Syntax_Shortcuts, LinearAlgebra[Multiply], Student/LinearAlgebra/Operators
Download Help Document
What kind of issue would you like to report? (Optional)