|\^/| Maple 2022 (X86 64 LINUX) ._|\| |/|_. Copyright (c) Maplesoft, a division of Waterloo Maple Inc. 2022 \ MAPLE / All rights reserved. Maple is a trademark of <____ ____> Waterloo Maple Inc. | Type ? for help. > FFGE := proc(A::Matrix) > local n,m,mu,det,i,j,k,N,Q; > n,m := op(1,A); > mu := 1: > det := 1; > for k to n-1 do > i := k; > while i<=n and A[i,k]=0 do i++; od; > if i>n then return 0 fi; > if i>k then > det := -det; > for j from k to n do > A[i,j],A[k,j] := A[k,j],A[i,j]; > od; > fi; > for i from k+1 to n do > for j from k+1 to n do > N := expand(A[k,k]*A[i,j]-A[i,k]*A[k,j]); > divide(N,mu,'Q'); > if k = n-1 then # last step > printf("k=%d i=%d j=%d #Ak-1k-1=%d #N=%d #Q=%d #N/#Q=%.3f\n", > k,i,j,numterms(mu),numterms(N),numterms(Q), > evalf(numterms(N)/numterms(Q))); > fi; > A[i,j] := Q; > od; > A[i,k] := 0; > od; > mu := A[k,k]; > od; > A[n,n]; > end: > > GetSymMat := proc(n,x) > local A,i,j,k; > A := Matrix(n,n); > k := 1; > for i to n do > A[i,i] := x[k]; k++; > for j from i+1 to n do > A[i,j] := x[k]; > A[j,i] := x[k]; > k++; > od; > od; > A; > end: > numterms := proc(f) > if f=0 then 0 elif type(f,`+`) then nops(f) else 1 fi; > end: > with(LinearAlgebra): # Test > S3 := GetSymMat(3,x); [x[1] x[2] x[3]] [ ] S3 := [x[2] x[4] x[5]] [ ] [x[3] x[5] x[6]] > det := Determinant(S3); 2 2 2 det := x[1] x[4] x[6] - x[1] x[5] - x[2] x[6] + 2 x[2] x[3] x[5] - x[3] x[4] > FFGE(S3); k=2 i=3 j=3 #Ak-1k-1=1 #N=5 #Q=5 #N/#Q=1.000 2 2 2 x[1] x[4] x[6] - x[1] x[5] - x[2] x[6] + 2 x[2] x[3] x[5] - x[3] x[4] > S3; [x[1] , x[2] , x[3]] [ 2 ] [0 , x[1] x[4] - x[2] , x[1] x[5] - x[2] x[3]] [ [0 , 0 , 2 2 2 ] x[1] x[4] x[6] - x[1] x[5] - x[2] x[6] + 2 x[2] x[3] x[5] - x[3] x[4]] > for n from 3 to 8 do > A := GetSymMat(n,x); > det1 := Determinant(A); > det2 := FFGE(A); > print(n,evalb(det1=det2),numterms(det1)); > od: k=2 i=3 j=3 #Ak-1k-1=1 #N=5 #Q=5 #N/#Q=1.000 3, true, 5 k=3 i=4 j=4 #Ak-1k-1=2 #N=32 #Q=17 #N/#Q=1.882 4, true, 17 k=4 i=5 j=5 #Ak-1k-1=5 #N=324 #Q=73 #N/#Q=4.438 5, true, 73 memory used=3.4MB, alloc=40.3MB, time=0.05 k=5 i=6 j=6 #Ak-1k-1=17 #N=5292 #Q=388 #N/#Q=13.639 6, true, 388 memory used=60.9MB, alloc=82.5MB, time=0.42 k=6 i=7 j=7 #Ak-1k-1=73 #N=123432 #Q=2461 #N/#Q=50.155 7, true, 2461 memory used=145.6MB, alloc=84.7MB, time=1.05 memory used=226.5MB, alloc=186.3MB, time=1.79 memory used=434.5MB, alloc=250.3MB, time=3.89 memory used=588.5MB, alloc=346.3MB, time=5.16 memory used=665.2MB, alloc=410.3MB, time=6.66 memory used=690.1MB, alloc=442.3MB, time=8.44 memory used=845.6MB, alloc=570.3MB, time=11.76 memory used=957.7MB, alloc=698.3MB, time=16.39 memory used=1109.7MB, alloc=858.3MB, time=22.24 memory used=1529.6MB, alloc=1165.1MB, time=33.90 memory used=1791.8MB, alloc=1389.1MB, time=46.41 memory used=2445.7MB, alloc=1775.3MB, time=71.02 k=7 i=8 j=8 #Ak-1k-1=388 #N=3933630 #Q=18155 #N/#Q=216.669 8, true, 18155 So the maximum expression swell at n=8 is a factor of 217