Matrix Divide

From APL Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Matrix Divide () is a dyadic function that performs matrix division between two arguments of rank 2 or less. Some dialects automatically apply it to rank-2 subarrays of higher-rank arguments. It shares the glyph Quad Divide (often called Domino) with the monadic function Matrix Inverse. These functions were added to APL\360 in 1970[1] and are widely supported in modern APL.

Examples

The result of X⌹Y is equal to (⌹Y)+.×X, which is analogous to X÷Y being equal to (÷Y)×X. As a consequence, X≡Y+.×X⌹Y is true for square matrices.

      ⎕←X←2 2⍴1 2 3 4
1 2
3 4
      ⎕←Y←2 2⍴5 6 7 8
5 6
7 8
      X⌹Y
 5  4
¯4 ¯3
      (⌹Y)+.×X
 5  4
¯4 ¯3
      X≡Y+.×X⌹Y
1

Applications

From the properties of Moore-Penrose inverse (which Matrix Inverse uses), Matrix Divide can not only be used to solve a system of linear equations, but also to find the linear least squares solution to an overdetermined system.

The following example solves the system of equations . The answer is .

      ⎕←X←2 2⍴1 2 2 ¯1
1  2
2 ¯1
      Y←5 8
      Y⌹X
4.2 0.4

The following example solves the linear least squares over the five points . The answer is .

      ⎕←X←1,⍪⍳5
1 1
1 2
1 3
1 4
1 5
      Y←5 1 4 2 8
      Y⌹X
1.9 0.7

When used with real vectors as both arguments, Y×X⌹Y gives the projection of X onto a basis vector Y. The remaining component of X, namely R←X-Y×X⌹Y, is orthogonal to Y (R+.×Y is zero).

      (X Y)←(2 7)(3 1)
      X⌹Y
1.3
      Y×X⌹Y  ⍝ Projection of X onto Y
3.9 1.3
      X-Y×X⌹Y  ⍝ The remaining component in X
¯1.9 5.7
      ⎕CT>|Y+.×X-Y×X⌹Y  ⍝ ∧ is orthogonal to Y (with negligible error)
1

External links

Lesson

Documentation

References

  1. "Report of the APL SHARE conference" (pdf). APL Quote-Quad Volume 2, Number 3. 1970-09.
APL built-ins [edit]
Primitives (Timeline) Functions
Scalar
Monadic ConjugateNegateSignumReciprocalMagnitudeExponentialNatural LogarithmFloorCeilingFactorialNotPi TimesRollTypeImaginarySquare Root
Dyadic AddSubtractTimesDivideResiduePowerLogarithmMinimumMaximumBinomialComparison functionsBoolean functions (And, Or, Nand, Nor) ∙ GCDLCMCircularComplexRoot
Non-Scalar
Structural ShapeReshapeTallyDepthRavelEnlistTableCatenateReverseRotateTransposeRazeMixSplitEncloseNestCut (K)PairLinkPartitioned EnclosePartition
Selection FirstPickTakeDropUniqueIdentityStopSelectReplicateExpandSet functions (IntersectionUnionWithout) ∙ Bracket indexingIndexCartesian ProductSort
Selector Index generatorGradeIndex OfInterval IndexIndicesDealPrefix and suffix vectors
Computational MatchNot MatchMembershipFindNub SieveEncodeDecodeMatrix InverseMatrix DivideFormatExecuteMaterialiseRange
Operators Monadic EachCommuteConstantReplicateExpandReduceWindowed ReduceScanOuter ProductKeyI-BeamSpawnFunction axis
Dyadic BindCompositions (Compose, Reverse Compose, Beside, Withe, Atop, Over) ∙ Inner ProductDeterminantPowerAtUnderRankDepthVariantStencilCutDirect definition (operator)
Quad names Index originComparison toleranceMigration levelAtomic vector