Overview of Computation in Student[LinearAlgebra] - Maple Programming Help

Home : Support : Online Help : Education : Student Packages : Linear Algebra : Computation : Student/LinearAlgebra/ComputationOverview

Overview of Computation in Student[LinearAlgebra]

 • For a general introduction to the LinearAlgebra subpackage of the Student package and a list of the linear algebra computation routines, see Student[LinearAlgebra].
 • The computation routines in the Student[LinearAlgebra] subpackage are interfaces to the corresponding routines in the top-level LinearAlgebra package.  There are two principal differences that these interfaces implement, however.
 First, the top-level LinearAlgebra routines use hardware floating-point computations whenever possible.  While this is important for large scale problems, it is potentially confusing, so in the Student[LinearAlgebra] subpackage this feature is turned off by default.
 Second, the top-level LinearAlgebra routines generally treat symbols as complex-valued rather than real-valued.  For example, a calculation such as $⟨a,b⟩·⟨c,d⟩$ results in complex conjugates being applied to some of the symbols.  Again, this working environment, while important in the context of the full Maple program, is less essential in the Student[LinearAlgebra] context, and symbols are generally treated as real-valued in this package.
 • The commands available for use in linear algebra computation are:

 • To use hardware floating-point computations and treat symbols as complex-valued, use the SetDefault command in the (main) Student subpackage.  Local control is available for the complex-versus-real assumption by appropriate use of the conjugate option on relevant Student[LinearAlgebra] commands.  This local control is not available for the hardware-versus-software floating-point context.  These variations are illustrated in the following examples.
 > with(Student):
 > with(LinearAlgebra):
 Normal usage:
 > Norm(, 2);
 $\sqrt{{{a}}^{{2}}{+}{{b}}^{{2}}}$ (1)
 To assume that the symbols are complex for a particular computation:
 > Norm(, 2, conjugate);
 $\sqrt{{\left|{a}\right|}^{{2}}{+}{\left|{b}\right|}^{{2}}}$ (2)
 To assume that symbols are complex in any computation:
 > SetDefault(conjugate = true);
 ${\mathrm{conjugate}}{=}{\mathrm{false}}$ (3)
 > Norm(, 2);
 $\sqrt{{\left|{a}\right|}^{{2}}{+}{\left|{b}\right|}^{{2}}}$ (4)
 Normal floating-point computation:
 > <1.2,3.4> . <1.3,4.2>;
 ${15.8399999999999999}$ (5)
 For floating-point computations to take place in hardware whenever possible:
 > SetDefault(hardwarefloats=true);
 ${\mathrm{hardwarefloats}}{=}{\mathrm{false}}$ (6)
 > <1.2,3.4> . <1.3,4.2>;
 ${15.8399999999999999}$ (7)
 • There is special notation for the transpose and Hermitian transpose operations for Matrices and Vectors: ${M}^{+}$ computes the transpose of $M$, where $M$ is a Matrix or Vector (or scalar); and  ${M}^{*}$ computes the Hermitian (conjugate) transpose of $M$.
 > A := <||>;
 ${A}{≔}\left[\begin{array}{ccc}{a}& {c}& {e}\\ {b}& {d}& {f}\end{array}\right]$ (8)
 > v := ;
 ${v}{≔}\left[\begin{array}{ccc}{a}& {b}& {c}\end{array}\right]$ (9)
 > A^+, v^+;
 $\left[\begin{array}{cc}{a}& {b}\\ {c}& {d}\\ {e}& {f}\end{array}\right]{,}\left[\begin{array}{c}{a}\\ {b}\\ {c}\end{array}\right]$ (10)
 > A^*, v^*;
 $\left[\begin{array}{cc}\stackrel{{&conjugate0;}}{{a}}& \stackrel{{&conjugate0;}}{{b}}\\ \stackrel{{&conjugate0;}}{{c}}& \stackrel{{&conjugate0;}}{{d}}\\ \stackrel{{&conjugate0;}}{{e}}& \stackrel{{&conjugate0;}}{{f}}\end{array}\right]{,}\left[\begin{array}{c}\stackrel{{&conjugate0;}}{{a}}\\ \stackrel{{&conjugate0;}}{{b}}\\ \stackrel{{&conjugate0;}}{{c}}\end{array}\right]$ (11)