Matrix Inverse: Difference between revisions
m (Text replacement - "<source" to "<syntaxhighlight") |
(History in APL\360) |
||
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'' <syntaxhighlight lang=apl inline>⌹</syntaxhighlight> (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'' <syntaxhighlight lang=apl inline>⌹</syntaxhighlight> (often called ''Domino'') with the dyadic function [[Matrix Divide]]. These functions were added to [[APL\360]] in 1970<ref>"Report of the APL SHARE conference" ([https://dl.acm.org/action/showBmPdf?doi=10.1145%2F987461 pdf]). [[APL Quote-Quad]] Volume 2, Number 3. 1970-09.</ref> and are widely supported in modern APL. | ||
== Examples == | == Examples == | ||
Line 67: | Line 67: | ||
* J [https://www.jsoftware.com/help/dictionary/d131.htm Dictionary], [https://code.jsoftware.com/wiki/Vocabulary/percentdot NuVoc] (as <syntaxhighlight lang=j inline>%.</syntaxhighlight>) | * J [https://www.jsoftware.com/help/dictionary/d131.htm Dictionary], [https://code.jsoftware.com/wiki/Vocabulary/percentdot NuVoc] (as <syntaxhighlight lang=j inline>%.</syntaxhighlight>) | ||
== References == | |||
<references/> | |||
{{APL built-ins}}[[Category:Primitive functions]] | {{APL built-ins}}[[Category:Primitive functions]] |
Latest revision as of 01:39, 18 March 2024
⌹
|
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. These functions were added to APL\360 in 1970[1] and are widely supported in modern APL.
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
- Dyalog
- APLX
- NARS2000
- J Dictionary, NuVoc (as
%.
)
References
- ↑ "Report of the APL SHARE conference" (pdf). APL Quote-Quad Volume 2, Number 3. 1970-09.