Error, (in rtable/Product) invalid arguments
Description
Examples
See Also
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.
Example 1
M ≔ 1,2|3,4
V ≔ 5,6
M⋅V
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):
M*V;
Solution:
To fix the problem, the dot operator (period) should be used instead of the center dot (asterisk):
M.V
Here is the same solution using 1-D Maple Input:
M.V;
Example 2
f ≔ a,b → a b:
fM,V
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:
gM,V
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.
M M
M V
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.
Example 3
f≔A,B→A+B:
g≔M,N→M−N:
f2,3,7,11 g1,1,1,−1
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.
f2,3,7,11.g1,1,1,−1
28
dot, examples/LA_Syntax_Shortcuts, LinearAlgebra[Multiply], Student/LinearAlgebra/Operators
Download Help Document