Matrix Inverse: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
No edit summary
(links)
Line 1: Line 1:
{{Built-in|Matrix Inverse|⌹}} is a [[monadic function]] that returns the [[wikipedia:matrix inverse|inverse]] of the [[simple]] numeric array of [[rank]] 2 or lower. It shares the [[glyph]] ''Quad Divide'' <source lang=apl inline>⌹</source> (often called ''Domino'') with the dyadic function [[Matrix Divide]].
{{Built-in|Matrix Inverse|⌹}} is a [[monadic]] [[primitive function]] that returns the [[wikipedia:matrix inverse|inverse]] of a [[simple]] [[numeric]] array of [[rank]] 2 or lower. Some dialects automatically apply it to rank-2 [[subarray]]s of higher rank [[argument]]s. It shares the [[glyph]] ''Quad Divide'' <source lang=apl inline>⌹</source> (often called ''Domino'') with the dyadic function [[Matrix Divide]].


== Examples ==
== Examples ==

Revision as of 08:31, 10 June 2020

Matrix Inverse () is a monadic primitive function that returns the inverse of a simple numeric array of rank 2 or lower. Some dialects automatically apply it to rank-2 subarrays of higher rank arguments. It shares the glyph Quad Divide (often called Domino) with the dyadic function Matrix Divide.

Examples

Matrix Inverse computes the ordinary inverse if the argument is a square matrix. DOMAIN ERROR is raised if the given matrix is not invertible.

      ⎕←M←2 2⍴3 4 4 5
3 4
4 5
      ⎕←R←⌹M
¯5  4
 4 ¯3
      R+.×M
1 0
0 1
      ⌹2 2⍴0
DOMAIN ERROR
 ⌹2 2⍴0     
 ∧

When the argument is a scalar or vector, or the given matrix has more rows than columns (r>c where r c≡⍴X), Matrix Inverse computes specific forms of generalized inverse called Moore-Penrose inverse. For a scalar, the result is the reciprocal of the argument; for a vector, the result equals (+X)÷X+.×+X. For a non-square matrix, the result equals (+⍉X)⌹(+⍉X)+.×X (where +⍉X is the conjugate transpose of X).

      (⌹2)(⌹2J1)
0.5 0.4J¯0.2
      ÷2 2J1
0.5 0.4J¯0.2

      (⌹3 1)(⌹2 1 1J2)
┌───────┬────────────────┐
│0.3 0.1│0.2 0.1 0.1J¯0.2│
└───────┴────────────────┘
      {(+⍵)÷⍵+.×+⍵}¨ (3 1) (2 1 1J2)
┌───────┬────────────────┐
│0.3 0.1│0.2 0.1 0.1J¯0.2│
└───────┴────────────────┘
      (⌹3 1)(⌹2 1 1J2) +.ר (3 1)(2 1 1J2)
1 1

      ⎕←M←3 2⍴1 ¯1 0J1 1 ¯1 0J1
 1   ¯1  
 0J1  1  
¯1    0J1
      ⎕←R←⌹M
 0.5J¯0.5 0.25J¯0.25 ¯0.25J¯0.25
¯0.5J¯0.5 0.25J¯0.25 ¯0.25J¯0.25
      R≡{(+⍉⍵)⌹(+⍉⍵)+.×⍵} M
1
      R+.×M
 1.0000E000J¯5.5511E¯17 0
¯2.7756E¯17J05.5511E¯17 1

External links

Lesson

Documentation


APL built-ins [edit]
Primitives (Timeline) Functions
Scalar
Monadic ConjugateNegateSignumReciprocalMagnitudeExponentialNatural LogarithmFloorCeilingFactorialNotPi TimesRollTypeImaginarySquare RootRound
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 axisIdentity (Null, Ident)
Dyadic BindCompositions (Compose, Reverse Compose, Beside, Withe, Atop, Over) ∙ Inner ProductDeterminantPowerAtUnderRankDepthVariantStencilCutDirect definition (operator)Identity (Lev, Dex)
Quad names Index originComparison toleranceMigration levelAtomic vector