> with(linalg): Warning, the protected names norm and trace have been redefined and unprotected > A := matrix(3,3); A := array(1 .. 3, 1 .. 3, []) > B := matrix(3,3); B := array(1 .. 3, 1 .. 3, []) > rnd:=rand(-10..10); rnd := proc() local t; global _seed; _seed := irem(427419669081*_seed, 999999999989); t := _seed; irem(t, 21) - 10 end proc > for i from 1 to 3 do for j from 1 to 3 do > A[i,j]:=rnd(); B[i,j]:=rnd(); > od; od; > print(A); [ -4 8 -6] [ ] [ -5 6 0] [ ] [-10 1 -10] > invA := evalm(A^(-1)); [ -37 -18] [6/49 --- ---] [ 245 245] [ ] [ -3 ] invA := [5/49 2/49 -- ] [ 49 ] [ ] [-11 38 -8 ] [--- --- ---] [98 245 245] > evalm(A &* invA); [1 0 0] [ ] [0 1 0] [ ] [0 0 1] > invB := evalm(B^(-1)); [ 26 -2 ] [1/19 --- ---] [ 285 285] [ ] [ -43 91 ] invB := [2/19 --- ---] [ 285 285] [ ] [ -31 112] [1/19 --- ---] [ 285 285] > evalm(B &* invB); [1 0 0] [ ] [0 1 0] [ ] [0 0 1] > AB := evalm(A &* B); [ 22 -70 42] [ ] AB := [ 7 -86 70] [ ] [-73 -76 35] > invAB := inverse(AB); [11 -53 -92 ] [--- ---- ---- ] [665 9975 9975 ] [ ] [-51 274 -89 ] invAB := [---- ---- ---- ] [1330 9975 9975 ] [ ] [-227 3391 -701 ] [---- ----- -----] [4655 69825 69825] > evalm(AB &* invAB); [1 0 0] [ ] [0 1 0] [ ] [0 0 1] > evalm(invB &* invA); [11 -53 -92 ] [--- ---- ---- ] [665 9975 9975 ] [ ] [-51 274 -89 ] [---- ---- ---- ] [1330 9975 9975 ] [ ] [-227 3391 -701 ] [---- ----- -----] [4655 69825 69825] > read("/afs/eos.ncsu.edu/users/k/kaltofen/www/courses/LinAlgebra/Maple/ > refpkg/initpkg.mpl"); libname := /afs/eos.ncsu.edu/users/k/kaltofen/www/courses/LinAlg\ ebra/Maple, "/afs/bp/dist/maple60/lib" > with(refpkg); [E_I, E_II, E_III, mydet, myinverse, mysolve, ref, xref] > E1 := E_I(5,2,5); [1 0 0 0 0] [ ] [0 0 0 0 1] [ ] E1 := [0 0 1 0 0] [ ] [0 0 0 1 0] [ ] [0 1 0 0 0] > M := matrix(5,5); M := array(1 .. 5, 1 .. 5, []) > evalm(E1 &* M); [M[1, 1] M[1, 2] M[1, 3] M[1, 4] M[1, 5]] [ ] [M[5, 1] M[5, 2] M[5, 3] M[5, 4] M[5, 5]] [ ] [M[3, 1] M[3, 2] M[3, 3] M[3, 4] M[3, 5]] [ ] [M[4, 1] M[4, 2] M[4, 3] M[4, 4] M[4, 5]] [ ] [M[2, 1] M[2, 2] M[2, 3] M[2, 4] M[2, 5]] > evalm(M &* E1); [M[1, 1] M[1, 5] M[1, 3] M[1, 4] M[1, 2]] [ ] [M[2, 1] M[2, 5] M[2, 3] M[2, 4] M[2, 2]] [ ] [M[3, 1] M[3, 5] M[3, 3] M[3, 4] M[3, 2]] [ ] [M[4, 1] M[4, 5] M[4, 3] M[4, 4] M[4, 2]] [ ] [M[5, 1] M[5, 5] M[5, 3] M[5, 4] M[5, 2]] > inverse(E1); [1 0 0 0 0] [ ] [0 0 0 0 1] [ ] [0 0 1 0 0] [ ] [0 0 0 1 0] [ ] [0 1 0 0 0] > E2 := E_II(5,4,alpha); [1 0 0 0 0] [ ] [0 1 0 0 0] [ ] E2 := [0 0 1 0 0] [ ] [0 0 0 alpha 0] [ ] [0 0 0 0 1] > evalm(E2 &* M); [M[1, 1] , M[1, 2] , M[1, 3] , M[1, 4] , M[1, 5]] [M[2, 1] , M[2, 2] , M[2, 3] , M[2, 4] , M[2, 5]] [M[3, 1] , M[3, 2] , M[3, 3] , M[3, 4] , M[3, 5]] [alpha M[4, 1] , alpha M[4, 2] , alpha M[4, 3] , alpha M[4, 4] , alpha M[4, 5]] [M[5, 1] , M[5, 2] , M[5, 3] , M[5, 4] , M[5, 5]] > evalm(M &* E2); [M[1, 1] , M[1, 2] , M[1, 3] , M[1, 4] alpha , M[1, 5]] [ ] [M[2, 1] , M[2, 2] , M[2, 3] , M[2, 4] alpha , M[2, 5]] [ ] [M[3, 1] , M[3, 2] , M[3, 3] , M[3, 4] alpha , M[3, 5]] [ ] [M[4, 1] , M[4, 2] , M[4, 3] , alpha M[4, 4] , M[4, 5]] [ ] [M[5, 1] , M[5, 2] , M[5, 3] , M[5, 4] alpha , M[5, 5]] > inverse(E2); [1 0 0 0 0] [ ] [0 1 0 0 0] [ ] [0 0 1 0 0] [ ] [ 1 ] [0 0 0 ----- 0] [ alpha ] [ ] [0 0 0 0 1] > E3 := E_III(5, 2,4,alpha); [1 0 0 0 0] [ ] [0 1 0 0 0] [ ] E3 := [0 0 1 0 0] [ ] [0 alpha 0 1 0] [ ] [0 0 0 0 1] > evalm(E3 &* M); [M[1, 1] , M[1, 2] , M[1, 3] , M[1, 4] , M[1, 5]] [M[2, 1] , M[2, 2] , M[2, 3] , M[2, 4] , M[2, 5]] [M[3, 1] , M[3, 2] , M[3, 3] , M[3, 4] , M[3, 5]] [alpha M[2, 1] + M[4, 1] , alpha M[2, 2] + M[4, 2] , alpha M[2, 3] + M[4, 3] , M[2, 4] alpha + M[4, 4] , alpha M[2, 5] + M[4, 5]] [M[5, 1] , M[5, 2] , M[5, 3] , M[5, 4] , M[5, 5]] > evalm(M &* E3); [M[1, 1] , M[1, 2] + M[1, 4] alpha , M[1, 3] , M[1, 4] , M[1, 5]] [M[2, 1] , M[2, 2] + M[2, 4] alpha , M[2, 3] , M[2, 4] , M[2, 5]] [M[3, 1] , M[3, 2] + M[3, 4] alpha , M[3, 3] , M[3, 4] , M[3, 5]] [M[4, 1] , M[4, 2] + alpha M[4, 4] , M[4, 3] , M[4, 4] , M[4, 5]] [M[5, 1] , M[5, 2] + M[5, 4] alpha , M[5, 3] , M[5, 4] , M[5, 5]] > inverse(E3); > [1 0 0 0 0] [ ] [0 1 0 0 0] [ ] [0 0 1 0 0] [ ] [0 -alpha 0 1 0] [ ] [0 0 0 0 1] > ?xref > U := xref(A, 3, 'T'); [-4 8 -6 ] [ ] U := [ 0 -4 15/2 ] [ ] [ 0 0 -245/8] > evalm(T); [ 1 0 0] [ ] [-5/4 1 0] [ ] [ 55 ] [ -- -19/4 1] [ 16 ] > evalm(T &* A); [-4 8 -6 ] [ ] [ 0 -4 15/2 ] [ ] [ 0 0 -245/8] > ?rref > rref(A); [1 0 0] [ ] [0 1 0] [ ] [0 0 1] > infolevel[all]:=5: > myinverse(A); [ -37 -18] [6/49 --- ---] [ 245 245] [ ] [ -3 ] [5/49 2/49 -- ] [ 49 ] [ ] [-11 38 -8 ] [--- --- ---] [98 245 245] > printlevel:=5: > myinverse(A); {--> enter myinverse, args = A [ -4 8 -6] [ ] AA := [ -5 6 0] [ ] [-10 1 -10] n := 3 Ainv := array(identity, 1 .. 3, 1 .. 3, []) Elem step: exchange rows , 1, 1 Elem step: mult row , 1, by , -1/4 Elem step: add , 5, times row , 1, to row , 2 Elem step: add , 10, times row , 1, to row , 3 [1 -2 3/2 ] [-1/4 0 0] [ ] [ ] [0 -4 15/2], [-5/4 1 0] [ ] [ ] [0 -19 5 ] [-5/2 0 1] Elem step: exchange rows , 2, 2 Elem step: mult row , 2, by , -1/4 Elem step: add , 2, times row , 2, to row , 1 Elem step: add , 19, times row , 2, to row , 3 [3/8 -1/2 0] [1 0 -9/4 ] [ ] [ ] [5/16 -1/4 0] [0 1 -15/8 ], [ ] [ ] [ 55 ] [0 0 -245/8] [ -- -19/4 1] [ 16 ] Elem step: exchange rows , 3, 3 -8 Elem step: mult row , 3, by , --- 245 Elem step: add , 9/4, times row , 3, to row , 1 Elem step: add , 15/8, times row , 3, to row , 2 [ -37 -18] [6/49 --- ---] [ 245 245] [1 0 0] [ ] [ ] [ -3 ] [0 1 0], [5/49 2/49 -- ] [ ] [ 49 ] [0 0 1] [ ] [-11 38 -8 ] [--- --- ---] [98 245 245] <-- exit myinverse (now at top level) = array(1 .. 3, 1 .. 3,[(2, 1)=5/49,(1, 2)=-37/245,(3, 2)=38/245,(3, 1)=-11/98,(2, 3)=-3/49,(1, 1)=6/49,(3, 3)=-8/245,(1, 3)=-18/245,(2, 2)=2/49])} [ -37 -18] [6/49 --- ---] [ 245 245] [ ] [ -3 ] [5/49 2/49 -- ] [ 49 ] [ ] [-11 38 -8 ] [--- --- ---] [98 245 245] >