Matrix Inverse/Divide: Difference between revisions
(add toolbar footer) |
No edit summary |
||
Line 20: | Line 20: | ||
</table> | </table> | ||
<br /> | <br /> | ||
<p>This feature implements matrix inversion using [http://www.gnu.org/software/gsl/manual/html_node/Singular-Value-Decomposition.html Singular Value Decomposition]. In particular, this means that any numeric array meeting the rank and shape requirements above is invertible.</p> | <p>This feature implements matrix inversion on integer or floating point arguments using [http://www.gnu.org/software/gsl/manual/html_node/Singular-Value-Decomposition.html Singular Value Decomposition]. In particular, this means that any numeric array meeting the rank and shape requirements above is invertible.</p> | ||
<p>Matrix inverse (<apll>⌹R</apll>) and matrix division (<apll>L⌹R</apll>) on Rational or VFP arguments each have two limitations above and beyond that of normal conformability:</p> | |||
<ul> | |||
<li><p>for a square right argument that it be non-singular, and</p></li> | |||
<li><p>for an overdetermined (<apll>>/⍴R</apll>) right argument that the symmetric matrix <apll>(⍉R)+.×R</apll> be non-singular.</p></li> | |||
</ul> | |||
<p>These limitations are due to the algorithm ([http://en.wikipedia.org/wiki/Gauss%E2%80%93Jordan_elimination Gauss-Jordan Elimination]) used to implement Matrix Inverse/Divide on Rational and VFP numbers.</p> | |||
<p>For example,</p> | <p>For example,</p> | ||
Line 28: | Line 35: | ||
0 0 0<br /> | 0 0 0<br /> | ||
0 0 0<br /> | 0 0 0<br /> | ||
0 0 0</ | 0 0 0<br /> | ||
⌹3 3⍴1 2 3 4<br /> | |||
¯0.1944444444 0.2777777778 0.02777777778<br /> | |||
0.05555555556 ¯0.2222222222 0.2777777778<br /> | |||
0.3611111111 0.05555555556 ¯0.1944444444<br /> | |||
⌹3 3⍴1 2 3 4x<br /> | |||
¯7r36 5r18 1r36<br /> | |||
1r18 ¯2r9 5r18<br /> | |||
13r36 1r18 ¯7r36<br /> | |||
</apll> | |||
<br /> | <br /> | ||
<br /> | <br /> | ||
Line 58: | Line 74: | ||
</table> | </table> | ||
<br /> | <br /> | ||
<p>This feature implements matrix division using [http://www.gnu.org/software/gsl/manual/html_node/Singular-Value-Decomposition.html Singular Value Decomposition]. In particular, this means that any two numeric arrays meeting the rank and shape requirements above are divisible.</p> | <p>This feature implements matrix division on integers and floating point arguments using [http://www.gnu.org/software/gsl/manual/html_node/Singular-Value-Decomposition.html Singular Value Decomposition]. In particular, this means that any two numeric arrays meeting the rank and shape requirements above are divisible.</p> | ||
<p>As noted above, Matrix Division on Rational or VFP arguments uses a different algorithm and has slightly more restrictive conformability requirements.</p> | |||
<p>For example,</p> | <p>For example,</p> | ||
Line 67: | Line 85: | ||
0 0 0<br /> | 0 0 0<br /> | ||
0 0 0<br /> | 0 0 0<br /> | ||
0 0 0</apll> | 0 0 0<br /> | ||
1 2 3⌹3 3⍴1 2 3 4<br /> | |||
0.4444444444 0.4444444444 ¯0.1111111111<br /> | |||
1 2 3⌹3 3⍴1 2 3 4x<br /> | |||
4r9 4r9 ¯1r9</apll> | |||
{{Language Toolbar}} | {{Language Toolbar}} |
Revision as of 18:42, 30 July 2015
|
||||
R is a numeric scalar, vector or matrix; otherwise signal a RANK ERROR. If R is a matrix, ≥/⍴R must be true; otherwise signal a LENGTH ERROR. | ||||
Z is a numeric array of rank ⍴⍴R, and shape ⌽⍴R. |
This feature implements matrix inversion on integer or floating point arguments using Singular Value Decomposition. In particular, this means that any numeric array meeting the rank and shape requirements above is invertible.
Matrix inverse (⌹R) and matrix division (L⌹R) on Rational or VFP arguments each have two limitations above and beyond that of normal conformability:
for a square right argument that it be non-singular, and
for an overdetermined (>/⍴R) right argument that the symmetric matrix (⍉R)+.×R be non-singular.
These limitations are due to the algorithm (Gauss-Jordan Elimination) used to implement Matrix Inverse/Divide on Rational and VFP numbers.
For example,
⌹3 3⍴0
0 0 0
0 0 0
0 0 0
⌹3 3⍴1 2 3 4
¯0.1944444444 0.2777777778 0.02777777778
0.05555555556 ¯0.2222222222 0.2777777778
0.3611111111 0.05555555556 ¯0.1944444444
⌹3 3⍴1 2 3 4x
¯7r36 5r18 1r36
1r18 ¯2r9 5r18
13r36 1r18 ¯7r36
|
||||
L is a numeric scalar, vector or matrix; otherwise signal a RANK ERROR. | ||||
R is a numeric scalar, vector or matrix; otherwise signal a RANK ERROR. | ||||
If either L or R is a scalar or vector, it is coerced to a matrix by (L R)←⍪¨L R. After this coercion, if the two matrices have a different number of rows, signal a LENGTH ERROR. | ||||
Z is a numeric array. Before the above coercion of L and R, the rank of Z is ¯2+2⌈(⍴⍴L)+⍴⍴R, and the shape is (1↓⍴R),1↓⍴L. |
This feature implements matrix division on integers and floating point arguments using Singular Value Decomposition. In particular, this means that any two numeric arrays meeting the rank and shape requirements above are divisible.
As noted above, Matrix Division on Rational or VFP arguments uses a different algorithm and has slightly more restrictive conformability requirements.
For example,
a←3 3⍴0
a⌹a
0 0 0
0 0 0
0 0 0
1 2 3⌹3 3⍴1 2 3 4
0.4444444444 0.4444444444 ¯0.1111111111
1 2 3⌹3 3⍴1 2 3 4x
4r9 4r9 ¯1r9
NARS 2000 Lang Tool Bar |
← | → | + | - | × | ÷ | * | ⍟ | ⌹ | ○ | ! | ? | √ | | | ⌈ | ⌊ | ⊥ | ⊤ | ⊣ | ⊢ | |||
≡ | ≢ | < | ≤ | = | ≥ | > | ≠ | ∨ | ∧ | ⍱ | ⍲ | ↑ | ↓ | ⊂ | ⊃ | ⌷ | ⍋ | ⍒ | |||||
⍳ | ∊ | ⍸ | ⍷ | ∪ | ∩ | ⊆ | ⊇ | ~ | § | π | .. | , | ⍪ | ⍴ | ⌽ | ⊖ | ⍉ | ||||||
/ | \ | ⌿ | ⍀ | ⊙ | ¨ | ⍨ | ⍤ | ⍣ | ⍡ | ⍥ | ⍦ | . | ∘ | ⍠ | ‼ | ⌻ | ∂ | ∫ | ⍞ | ⎕ | ⍎ | ⍕ | |
⋄ | ⍝ | ∇ | ∆ | ⍙ | _ | ⍺ | ⍵ | ¯ | ⍬ | ∞ | ∅ | ||||||||||||
Second Row | i j k | i j k l | g | p | r | v | x |