4,577
edits
m (Text replacement - "</source>" to "</syntaxhighlight>") |
m (Text replacement - "<source" to "<syntaxhighlight") |
||
Line 1: | Line 1: | ||
{{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'' < | {{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'' <syntaxhighlight lang=apl inline>⌹</syntaxhighlight> (often called ''Domino'') with the dyadic function [[Matrix Divide]]. | ||
== Examples == | == Examples == | ||
Line 5: | Line 5: | ||
Matrix Inverse computes the ordinary inverse if the [[argument]] is a square matrix. [[DOMAIN ERROR]] is raised if the given matrix is not invertible. | Matrix Inverse computes the ordinary inverse if the [[argument]] is a square matrix. [[DOMAIN ERROR]] is raised if the given matrix is not invertible. | ||
< | <syntaxhighlight lang=apl> | ||
⎕←M←2 2⍴3 4 4 5 | ⎕←M←2 2⍴3 4 4 5 | ||
3 4 | 3 4 | ||
Line 21: | Line 21: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
When the argument is a [[scalar]] or [[vector]], or the given matrix has more rows than columns (< | When the argument is a [[scalar]] or [[vector]], or the given matrix has more rows than columns (<syntaxhighlight lang=apl inline>r>c</syntaxhighlight> where <syntaxhighlight lang=apl inline>r c≡⍴X</syntaxhighlight>), Matrix Inverse computes specific forms of generalized inverse called [[wikipedia:Moore-Penrose inverse|Moore-Penrose inverse]]. For a scalar, the result is the [[reciprocal]] of the argument; for a vector, the result equals <syntaxhighlight lang=apl inline>(+X)÷X+.×+X</syntaxhighlight>. For a non-square matrix, the result equals <syntaxhighlight lang=apl inline>(+⍉X)⌹(+⍉X)+.×X</syntaxhighlight> (where <syntaxhighlight lang=apl inline>+⍉X</syntaxhighlight> is the [[wikipedia:conjugate transpose|conjugate transpose]] of X). | ||
< | <syntaxhighlight lang=apl> | ||
(⌹2)(⌹2J1) | (⌹2)(⌹2J1) | ||
0.5 0.4J¯0.2 | 0.5 0.4J¯0.2 | ||
Line 65: | Line 65: | ||
* [http://microapl.com/apl_help/ch_020_020_270.htm APLX] | * [http://microapl.com/apl_help/ch_020_020_270.htm APLX] | ||
* [http://wiki.nars2000.org/index.php/Matrix_Inverse/Divide NARS2000] | * [http://wiki.nars2000.org/index.php/Matrix_Inverse/Divide NARS2000] | ||
* J [https://www.jsoftware.com/help/dictionary/d131.htm Dictionary], [https://code.jsoftware.com/wiki/Vocabulary/percentdot NuVoc] (as < | * J [https://www.jsoftware.com/help/dictionary/d131.htm Dictionary], [https://code.jsoftware.com/wiki/Vocabulary/percentdot NuVoc] (as <syntaxhighlight lang=j inline>%.</syntaxhighlight>) | ||
{{APL built-ins}}[[Category:Primitive functions]] | {{APL built-ins}}[[Category:Primitive functions]] |