# Talk:Gauss-Jordan matrix inversion

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Latest comment: 5 years ago by Thundergnat in topic what's wrong (with my REXX program)?

## what's wrong (with my REXX program)?

I suggest to change header to:   what's wrong with my REXX program?   -- Gerard Schildberger (talk) 09:30, 3 November 2018 (UTC)
Done.     -- Gerard Schildberger (talk) 17:56, 3 November 2018 (UTC)

My REXX algorithm works nicely most of the time. But sometimes it fails. E.g., with this matrix:

```  3  1  8  9  6
6  2  8 10  1
5  7  2 10  3
3  2  7  7  9
3  5  6  1  1
```

The first elimination sets a.2.2=0 and how could this become 1 furtheron? Help! Thanks!! --Walter Pachl 08:52, 3 November 2018 (UTC)

I don't see your failure,   a.2.2   becomes zero and stays a zero.

Also, where it says "Main diagonal has all ones" isn't true.

With:

```       a=  3 1 8 9 6     6 2 8 10 1     5 7 2 10 3     3 2 7 7 9     3 5 6 1 1
```
Output:
```show 1 The given matrix
3  1  8  9  6  1  0  0  0  0
6  2  8 10  1  0  1  0  0  0
5  7  2 10  3  0  0  1  0  0
3  2  7  7  9  0  0  0  1  0
3  5  6  1  1  0  0  0  0  1

show 2 1
3     1     8     9     6     1     0     0     0     0
0     0    -4    -4 -11/2    -1   1/2     0     0     0
0  16/5 -34/5    -3 -21/5    -1     0   3/5     0     0
0     1    -1    -2     3    -1     0     0     1     0
0     4    -2    -8    -5    -1     0     0     0     1

show 2 2
3     1     8     9     6     1     0     0     0     0
0     0    -4    -4 -11/2    -1   1/2     0     0     0
0     0     4     4  11/2     1  -1/2     0     0     0
0     0     4     4  11/2     1  -1/2     0     0     0
0     0     4     4  11/2     1  -1/2     0     0     0

show 2 3
3     1     8     9     6     1     0     0     0     0
0     0    -4    -4 -11/2    -1   1/2     0     0     0
0     0     4     4  11/2     1  -1/2     0     0     0
0     0     0     0     0     0     0     0     0     0
0     0     0     0     0     0     0     0     0     0

show 2 4
3     1     8     9     6     1     0     0     0     0
0     0    -4    -4 -11/2    -1   1/2     0     0     0
0     0     4     4  11/2     1  -1/2     0     0     0
0     0     0     0     0     0     0     0     0     0
0     0     0     0     0     0     0     0     0     0

Lower part has all zeros

show 3
3     1     8     9     6     1     0     0     0     0
0     0    -4    -4 -11/2    -1   1/2     0     0     0
0     0     4     4  11/2     1  -1/2     0     0     0
0     0     0     0     0     0     0     0     0     0
0     0     0     0     0     0     0     0     0     0

show 4 5
3     1     8     9     6     1     0     0     0     0
0     0    -4    -4 -11/2    -1   1/2     0     0     0
0     0     4     4  11/2     1  -1/2     0     0     0
0     0     0     0     0     0     0     0     0     0
0     0     0     0     0     0     0     0     0     0

show 4 4
3     1     8     9     6     1     0     0     0     0
0     0    -4    -4 -11/2    -1   1/2     0     0     0
0     0     4     4  11/2     1  -1/2     0     0     0
0     0     0     0     0     0     0     0     0     0
0     0     0     0     0     0     0     0     0     0

show 4 3
3    1    0    1   -5   -1    1    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    4    4 11/2    1 -1/2    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0

show 4 2
3    1    0    1   -5   -1    1    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    4    4 11/2    1 -1/2    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0

Upper half has all zeros

show 5
1  1/3    0  1/3 -5/3 -1/3  1/3    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    1    1 11/8  1/4 -1/8    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0

Main diagonal has all ones

show 6 The inverse matrix
-1/3  1/3    0    0    0
0    0    0    0    0
1/4 -1/8    0    0    0
0    0    0    0    0
0    0    0    0    0

The product of input and inverse matrix
1    1/3      0    1/3   -5/3
0      0      0      0      0
0      0      1      1   11/8
0      0      0      0      0
0      0      0      0      0
```

I would add the statement   (at least for now):

```  signal on noValue
```

as you have a piece of dead code (possibly a debugging leftover?):

```  ss=sigl
```

I used three different REXX interpreters, all yielded the same results.

Can any of the other programs handle this input correctly? --Walter Pachl 15:22, 3 November 2018 (UTC)
I ran it through the Perl 6 implementation and it works and is nominally correct. (If I invert the inverted matrix, I end up with the original.) I added it as another test case. See the last two tests under Gauss-Jordan_matrix_inversion#Perl_6 --Thundergnat (talk) 18:29, 3 November 2018 (UTC)
Thank you, that helped. I fixed my program for the case that a.2.2=0.

My inverse matrix is the same as Perl 6's

```show 6 The inverse matrix
-4525/6238  2529/6238  -233/3119  1481/3119  -639/6238
1033/6238 -1075/6238   342/3119  -447/3119   871/6238
1299/6238  -289/6238  -204/3119  -390/3119   739/6238
782/3119  -222/3119   237/3119  -556/3119  -177/3119
-474/3119   -17/3119   -24/3119   688/3119  -140/3119
```

Generalization of the REXX algorithm for ANY pivot=0 must be worked out (tbd) --Walter Pachl 19:58, 3 November 2018 (UTC)