def double_description(matrix, m, d): W=matrix[:int(d),:].copy() W=W.getI() for j in range (d,m): plusList=[] minusList=[] equalList=[] print("Dimensio W: ", W.shape) for i in range(W.shape[1]): print("Product: ", (matrix[j,:]) * W[:,i]) if np.isclose((matrix[j,:]) * (W[:,i]),0): equalList.append((W[:,i]).T) elif (matrix[j,:]) * W[:,i] < 0: minusList.append((W[:,i]).T) elif (matrix[j,:]) * W[:,i] > 0: plusList.append((W[:,i]).T) if len(minusList)==0: print("Laenge Liste <> < 0: 0") else: X=[] for el in plusList: for nel in minusList: HL=[] for l in range(j): boolean = False tmp=nel * (matrix[l,:]).T if np.isclose(el * (matrix[l,:]).T,tmp, 0, 1e-12) and np.isclose(0,tmp, 0, 1e-12): HL.append(matrix[l,:]) boolean=True if boolean: HLarray=np.asarray(HL) H=np.matrix(HLarray) if tlr.rank(H) == d-2: HL.append(matrix[j-1,:]) HLarray=np.asarray(HL) H=np.matrix(HLarray) print("Matrix H: ", H) array=tlr.nullspace(H) geq=True for k in range(j): if matrix[k,:]*array[:,0] < 0: geq= False if geq==False: for n in array[:,0]: n=-n x=np.asarray(array[:,0].T) print("x: ", x) #x=x/x[0] X.append(x) print("pluslist: ", plusList, '\n', "minus: ", minusList,'\n' "equal: ", equalList) tempW = plusList + equalList + X arrayW = np.asarray(tempW) print("arrayW: ", arrayW) print("Partitionen hintereinander in Liste: ", tempW) W=(np.matrix(arrayW)).T print("W nach Schleife: ", W) m=W.shape[0] return (W,m) pass
def double_description(matrix, m, d): W=matrix[:int(d),:].copy() W=W.getI() for j in range (d,m): plusList=[] minusList=[] equalList=[] print("Dimensio W: ", W.shape) for i in range(W.shape[0]): #wirklich w[i] Zeilen? print("Product: ", (W[i,:]) * (matrix[j,:]).T) if np.isclose((W[i,:]) * (matrix[j,:]).T,0): equalList.append(W[i,:]) elif (W[i,:]) * (matrix[j,:]).T < 0: minusList.append(W[i,:]) elif (W[i,:]) * (matrix[j,:]).T > 0: plusList.append(W[i,:]) if len(minusList)==0: print("Laenge Liste <> < 0: 0") else: X=[] for el in plusList: for nel in minusList: HL=[] for l in range(j-1): tmp=nel * (matrix[l,:]).T if np.isclose(el * (matrix[l,:]).T,tmp, 0, 1e-12) and np.isclose(0,tmp, 0, 1e-12): HL.append(matrix[l,:]) H=np.matrix(HL) print("Matrix H: ", H) if tlr.rank(H) == d-2: array=tlr.nullspace(H) x=array[:,0].T if x[0] != 0: x=x/x[0] X.append(x) print("pluslist: ", plusList, '\n', "minus: ", minusList,'\n' "equal: ", equalList) tempW = plusList + equalList + X arrayW = np.asarray(tempW) print("arrayW: ", arrayW) print("Partitionen hintereinander in Liste: ", tempW) W=np.matrix(arrayW) print("W nach Schleife: ", W) m=W.shape[0] return (W,m) pass