Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download
Project: amplituhedron
Views: 73
def get_all_minors(matrix): k,n=matrix.dimensions(); subsets=(Combinations(range(n),k)); minors=[]; for cols in subsets: minors.append(matrix.matrix_from_columns(cols).determinant()); return minors; def is_tnn(matrix): minors=get_all_minors(matrix); non_zero_minor=0; for minor in minors: if (abs(minor)>0.000001): non_zero_minor=minor; break; for minor in minors: minor/=non_zero_minor; if (minor<-0.00000001): return false; if (abs(minor.imag())>0.0000001): print("IMAGINARY MINOR: "+str(minor)); return true; def get_top_submatrix(matrix,k): evecs=matrix.eigenvectors_right(); n=matrix.ncols(); evecs=sorted(evecs,key=lambda tup: tup[0].real(),reverse=1); #print([evec[0] for evec in evecs]); MM=Matrix(CC,k,n); for i in range(k): for j in range(n): #print(evecs[i]); MM[i,j]=evecs[i][1][0][j]; return MM; def get_tridiag_matrix(a,b,c): n=len(c); M=Matrix(n,n); for i in range(n): M[i,i]=c[i]; if (i<n-1): M[i,i+1]=a[i]; M[i+1,i]=b[i]; if (len(a)==n): M[n-1,0]=a[n-1]; if (len(b)==n): M[0,n-1]=b[n-1]; return M; #c=[23,1,8,13,1] #a=[75,1,7,8,7]; #b=[2,3,4,1,19]; n=5; iter=50; set_random_seed(3); max_value=20; for it in range(iter): a=[ZZ.random_element(max_value)+1 for i in range(n)]; b=[ZZ.random_element(max_value)+1 for i in range(n)]; c=[ZZ.random_element(max_value)+1 for i in range(n)]; M=get_tridiag_matrix(a,b,c); print(M); print("checking tnn for each k") for k in range(1,n+1): M[n-1,0]=(-1)^(k-1)*abs(M[n-1,0]); M[0,n-1]=(-1)^(k-1)*abs(M[0,n-1]); MM=get_top_submatrix(M,k); #print("submatrix computed; checking tnn...") TNN="is tnn!" if (not is_tnn(MM)): TNN="NOT TNN!:(" #print(MM); #print("-------------------"+TNN+"-----------------") print("k="+str(k)+": "+TNN) if (TNN!="is tnn!"): print("FAIL") exit();
[ 4 5 0 0 16] [ 6 14 2 0 0] [ 0 15 3 3 0] [ 0 0 9 2 11] [ 3 0 0 3 16] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [15 3 0 0 2] [ 3 3 18 0 0] [ 0 14 3 14 0] [ 0 0 7 10 8] [10 0 0 4 5] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [15 5 0 0 5] [ 4 7 12 0 0] [ 0 18 1 16 0] [ 0 0 18 13 7] [ 5 0 0 3 8] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [18 10 0 0 4] [ 5 19 10 0 0] [ 0 10 9 10 0] [ 0 0 19 11 10] [14 0 0 8 6] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [19 2 0 0 11] [14 17 8 0 0] [ 0 6 6 10 0] [ 0 0 20 18 2] [ 7 0 0 20 10] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [ 6 12 0 0 9] [ 7 20 20 0 0] [ 0 2 17 11 0] [ 0 0 2 11 18] [ 9 0 0 3 14] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [20 14 0 0 2] [ 7 3 10 0 0] [ 0 7 7 15 0] [ 0 0 14 8 10] [11 0 0 12 5] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [10 6 0 0 4] [ 6 18 5 0 0] [ 0 3 13 7 0] [ 0 0 20 5 19] [ 4 0 0 9 1] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [17 4 0 0 17] [ 6 9 11 0 0] [ 0 12 18 9 0] [ 0 0 7 15 5] [ 1 0 0 17 16] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [16 3 0 0 2] [ 6 6 13 0 0] [ 0 14 3 4 0] [ 0 0 4 11 13] [ 2 0 0 6 7] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [10 20 0 0 4] [13 1 19 0 0] [ 0 19 13 3 0] [ 0 0 17 12 8] [ 5 0 0 10 6] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [ 3 13 0 0 6] [ 5 13 4 0 0] [ 0 1 1 20 0] [ 0 0 1 20 9] [15 0 0 7 6] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [16 6 0 0 19] [15 10 11 0 0] [ 0 13 19 11 0] [ 0 0 12 2 17] [ 1 0 0 6 3] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [ 7 2 0 0 18] [ 1 15 11 0 0] [ 0 10 11 6 0] [ 0 0 8 5 18] [ 2 0 0 4 5] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [ 4 15 0 0 6] [ 5 10 10 0 0] [ 0 7 6 15 0] [ 0 0 20 12 2] [20 0 0 13 18] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [ 3 4 0 0 13] [20 19 20 0 0] [ 0 14 9 7 0] [ 0 0 13 9 3] [ 6 0 0 13 3] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [18 7 0 0 18] [14 11 4 0 0] [ 0 16 8 15 0] [ 0 0 7 4 16] [16 0 0 12 18] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [ 7 6 0 0 5] [ 6 11 13 0 0] [ 0 16 3 1 0] [ 0 0 14 3 4] [14 0 0 11 9] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [11 20 0 0 13] [11 20 14 0 0] [ 0 20 20 13 0] [ 0 0 8 13 12] [ 1 0 0 11 2] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [14 19 0 0 20] [19 18 4 0 0] [ 0 14 2 1 0] [ 0 0 6 16 15] [ 5 0 0 7 20] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [ 7 10 0 0 19] [ 4 8 1 0 0] [ 0 10 20 4 0] [ 0 0 13 2 9] [10 0 0 5 2] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [ 2 16 0 0 20] [14 9 5 0 0] [ 0 12 13 2 0] [ 0 0 12 15 3] [ 8 0 0 19 6] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [18 20 0 0 15] [16 1 18 0 0] [ 0 4 6 6 0] [ 0 0 4 6 6] [17 0 0 8 13] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [ 1 1 0 0 9] [ 2 15 16 0 0] [ 0 3 7 15 0] [ 0 0 5 16 6] [12 0 0 3 18] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [10 14 0 0 10] [19 8 15 0 0] [ 0 15 4 2 0] [ 0 0 8 19 19] [19 0 0 17 13] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [12 10 0 0 15] [14 3 5 0 0] [ 0 12 7 19 0] [ 0 0 9 12 17] [19 0 0 7 19] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [ 9 12 0 0 15] [10 13 4 0 0] [ 0 7 16 17 0] [ 0 0 14 1 8] [ 6 0 0 6 8] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [15 8 0 0 5] [15 17 7 0 0] [ 0 17 7 12 0] [ 0 0 5 19 20] [ 2 0 0 3 8] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [ 7 11 0 0 15] [19 3 19 0 0] [ 0 17 15 16 0] [ 0 0 8 18 13] [ 3 0 0 6 20] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [17 13 0 0 8] [ 7 8 2 0 0] [ 0 9 1 1 0] [ 0 0 7 20 4] [16 0 0 5 7] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [11 14 0 0 8] [10 14 15 0 0] [ 0 6 4 16 0] [ 0 0 16 16 4] [ 2 0 0 18 7] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [ 3 8 0 0 1] [16 3 10 0 0] [ 0 5 19 20 0] [ 0 0 14 7 7] [13 0 0 17 3] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [ 3 3 0 0 8] [16 1 7 0 0] [ 0 2 12 18 0] [ 0 0 3 11 20] [15 0 0 4 7] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [ 5 20 0 0 4] [ 2 15 6 0 0] [ 0 11 13 5 0] [ 0 0 15 9 5] [ 2 0 0 13 10] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [ 4 8 0 0 13] [ 1 19 5 0 0] [ 0 9 6 14 0] [ 0 0 19 14 7] [ 1 0 0 10 20] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [ 1 2 0 0 13] [ 9 5 4 0 0] [ 0 15 16 18 0] [ 0 0 6 3 7] [ 7 0 0 1 13] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [ 9 14 0 0 19] [ 2 13 3 0 0] [ 0 6 7 12 0] [ 0 0 13 20 13] [ 7 0 0 5 6] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [14 4 0 0 17] [20 16 7 0 0] [ 0 20 17 5 0] [ 0 0 17 6 4] [10 0 0 7 12] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [14 19 0 0 18] [16 7 5 0 0] [ 0 14 5 2 0] [ 0 0 15 11 17] [17 0 0 6 7] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [17 1 0 0 6] [ 3 11 12 0 0] [ 0 13 13 20 0] [ 0 0 17 17 15] [ 4 0 0 18 4] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [12 13 0 0 2] [ 1 8 3 0 0] [ 0 13 12 1 0] [ 0 0 5 17 12] [ 4 0 0 5 7] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [18 1 0 0 4] [15 20 9 0 0] [ 0 2 11 13 0] [ 0 0 14 5 16] [ 6 0 0 3 18] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [20 14 0 0 12] [19 9 15 0 0] [ 0 14 14 12 0] [ 0 0 10 2 20] [17 0 0 8 20] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [ 7 14 0 0 15] [ 7 8 11 0 0] [ 0 5 5 17 0] [ 0 0 5 7 5] [ 9 0 0 16 5] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [14 1 0 0 10] [13 9 13 0 0] [ 0 13 3 15 0] [ 0 0 12 10 6] [ 8 0 0 5 6] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [ 8 4 0 0 3] [20 11 5 0 0] [ 0 13 4 15 0] [ 0 0 9 8 18] [ 8 0 0 6 17] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [ 1 12 0 0 14] [ 8 17 15 0 0] [ 0 17 15 19 0] [ 0 0 9 13 17] [ 7 0 0 4 13] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [ 6 9 0 0 5] [11 13 11 0 0] [ 0 16 6 8 0] [ 0 0 1 8 4] [11 0 0 7 17] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [20 1 0 0 12] [17 3 13 0 0] [ 0 18 13 20 0] [ 0 0 4 2 5] [ 5 0 0 9 8] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn! [ 2 9 0 0 16] [15 3 8 0 0] [ 0 1 11 2 0] [ 0 0 8 4 3] [10 0 0 16 5] checking tnn for each k k=1: is tnn! k=2: is tnn! k=3: is tnn! k=4: is tnn! k=5: is tnn!