. - Maple Programming Help

.

operator for noncommutative or dot product multiplication

 Calling Sequence A . B

Parameters

 A, B - anything

Description

 • The '.' operator performs noncommutative or dot product multiplication on its arguments.
 If A and B are numbers (including complex and extended numerics such as infinity and undefined), then A . B = A*B.
 If A and B are Vectors with the same orientation (i.e., both are row Vectors or both are column Vectors), then A . B is computed by using LinearAlgebra[DotProduct].
 If one of A and B is a Matrix or a Vector, and the other is a Matrix, Vector or constant and the previous case does not apply, then their product is computed by using LinearAlgebra[Multiply].  See also simplify/rtable.
 If A and B are Arrays, their product is computed as component-wise multiplication using zip.  If A and B do not have the same dimensions, extra entries are ignored.
 Arguments that are not of type Matrix, Vector, constant, or Array are ignored, and A . B remains unevaluated.
 • Calls to '.' such as A . B . C call .(A, B, C).
 In this case, the process is repeated on the (transformed) arguments until no such argument pairs remain.
 • The dot operator is left-associative.
 • Note:  In Maple,  '.' can be interpreted as a decimal point (for example, $3.7$), as part of a range operator (for example, $x..y$), or as the (noncommutative) multiplication operator.  To distinguish between these three circumstances, Maple uses the following rule.
 Any dot that is not part of a range operator (more than one '.' in a row) and not part of a number is interpreted as the noncommutative multiplication operator.
 Note that the interpretation of the phrase "not part of a number" depends on whether you are using 1-D or 2-D input mode.  In 1-D input mode, interpretation proceeds from left to right, and a dot following a number will be interpreted as a decimal point unless that number already contains a decimal point.  In 2-D input mode, interpretation is carried out on the expression as a whole, and because spaces and juxtaposition can be interpreted as multiplication, a dot which is immediately preceded or followed by a number is always interpreted as a decimal point.
 For example, in 1-D input mode, 3.4 is a number, 3. 4 is an error and 3 .4 and 3 . 4 return 12.  3. .4 is 12. and 3..4 is a range.
 In 2-D input mode, 3.4 is a number, 3. 4 and 3 .4 are errors and 3 . 4 returns 12.  3. .4 is an error and 3..4 is again a range.  (All of the errors shown by these examples are due to the rule that a number cannot appear as the right-hand operand of an implicit multiplication operation. In such cases, use of explicit multiplication ( * ) can avoid the error.  See also 2-D Math Details for more information.)

 • The . operator is thread-safe as of Maple 15.

Examples

 > $\mathrm{with}\left(\mathrm{LinearAlgebra}\right):$
 > $A≔\mathrm{ScalarMatrix}\left(3,3\right)$
 ${A}{≔}\left[\begin{array}{ccc}{3}& {0}& {0}\\ {0}& {3}& {0}\\ {0}& {0}& {3}\end{array}\right]$ (1)
 > $B≔⟨⟨1,0,2⟩|⟨0,1,2⟩|⟨0,0,2⟩⟩$
 ${B}{≔}\left[\begin{array}{ccc}{1}& {0}& {0}\\ {0}& {1}& {0}\\ {2}& {2}& {2}\end{array}\right]$ (2)
 > $V≔⟨-1,2,-5⟩$
 ${V}{≔}\left[\begin{array}{c}{-1}\\ {2}\\ {-5}\end{array}\right]$ (3)
 > $A·B·V$
 $\left[\begin{array}{c}{-3}\\ {6}\\ {-24}\end{array}\right]$ (4)
 > $V·V$
 ${30}$ (5)
 > $B·\left(V·V\right)$
 $\left[\begin{array}{ccc}{30}& {0}& {0}\\ {0}& {30}& {0}\\ {60}& {60}& {60}\end{array}\right]$ (6)
 > $B·V·V$
 ${45}$ (7)
 > $4·V$
 $\left[\begin{array}{c}{-4}\\ {8}\\ {-20}\end{array}\right]$ (8)
 > $\mathrm{\lambda }·A·B$
 ${\mathrm{\lambda }}{·}\left[\begin{array}{ccc}{3}& {0}& {0}\\ {0}& {3}& {0}\\ {6}& {6}& {6}\end{array}\right]$ (9)
 > $a·b$
 ${a}{·}{b}$ (10)
 > $7·6$
 ${42}$ (11)
 > $\mathrm{Array1}≔\mathrm{Array}\left(\left[\left[1,2,3\right],\left[4,5,6\right]\right]\right)$
 ${\mathrm{Array1}}{≔}\left[\begin{array}{ccc}{1}& {2}& {3}\\ {4}& {5}& {6}\end{array}\right]$ (12)
 > $\mathrm{Array2}≔\mathrm{Array}\left(\left[\left[1,1,1\right],\left[2,2,2\right],\left[3,3,3\right]\right]\right)$
 ${\mathrm{Array2}}{≔}\left[\begin{array}{ccc}{1}& {1}& {1}\\ {2}& {2}& {2}\\ {3}& {3}& {3}\end{array}\right]$ (13)
 > $\mathrm{Array3}≔\mathrm{Array}\left(\left[\left[1,2,3\right],\left[1,2,3\right],\left[1,2,3\right]\right]\right)$
 ${\mathrm{Array3}}{≔}\left[\begin{array}{ccc}{1}& {2}& {3}\\ {1}& {2}& {3}\\ {1}& {2}& {3}\end{array}\right]$ (14)

If the dimensions of the Arrays are not the same, extra entries are ignored by the dot operator.

 > $\mathrm{Array1}·\mathrm{Array2}$
 $\left[\begin{array}{ccc}{1}& {2}& {3}\\ {8}& {10}& {12}\end{array}\right]$ (15)
 > $\mathrm{Array2}·\mathrm{Array3}$
 $\left[\begin{array}{ccc}{1}& {2}& {3}\\ {2}& {4}& {6}\\ {3}& {6}& {9}\end{array}\right]$ (16)