import copy #treba pre klonovanie zakladnej matice A do B print("RIESENIE SUSTAVY n-LIN.ROVNIC S n-NEZNAMYMI") print("KRAMEROVO PRAVIDLO") #01-podprogram pre determinant rekurzivne def det(matica): n=len(matica) #n je tu aj pocet riadkov matice if (n>2): i=1 t=0 sum=0 while t<=n-1: d={} t1=1 while t1<=n-1: m=0 d[t1]=[] while m<=n-1: if (m==t): u=0 else: d[t1].append(matica[t1][m]) m+=1 t1+=1 matica1=[d[x] for x in d] sum=sum+i*(matica[0][t])*(det(matica1)) i=i*(-1) t+=1 return sum else: return (matica[0][0]*matica[1][1]-matica[0][1]*matica[1][0]) #02-podprogram pre vymenu stlpca za PS def vymen_PS(A,PS,index_stlpca): B=copy.deepcopy(A) for i in range(len(PS)): B[i][index_stlpca]=PS[i] return B #HLAVNY PROGRAM #zadanie matice a PS - zatial pracne A=[[10,2,-1],[5,1,-2],[4,-2,5]] PS=[11,1,15] print("A = ",A) print("PS = ",PS) """ #alebo pracne #Ax=[[11,2,-1],[1,1,-2],[15,-2,5]] #Ay=[[10,11,-1],[5,1,-2],[4,15,5]] #Az=[[10,2,11],[5,1,1],[4,-2,15]] #d=det(A) #print(d) #dx=det(Ax) #print(dx) #dy=det(Ay) #print(dy) #dz=det(Az) #print(dz) """ Ax=vymen_PS(A,PS,0) #print(Ax) Ay=vymen_PS(A,PS,1) #print(Ay) Az=vymen_PS(A,PS,2) #print(Az) print("x=",det(Ax)/det(A)) print("y=",det(Ay)/det(A)) print("z=",det(Az)/det(A)) #alebo v cykle AA=[] for j in range(len(A)): AA.append(vymen_PS(A,PS,j)) #print(AA) #print(AA[0]) #print(AA[1]) #print(AA[2]) print("x=",det(AA[0])/det(A)) print("y=",det(AA[1])/det(A)) print("z=",det(AA[2])/det(A)) #alebo v cykle po uprave - s printom - aj viac neznámych ako 3 A=[[10,2,-1,-2],[5,1,-2,-3],[4,-2,5,-2],[1,1,1,1]] PS=[11,1,15,20] AA=[] for j in range(len(A)): AA.append(vymen_PS(A,PS,j)) print("x{}=".format(j+1),det(AA[j])/det(A)) """ #dokaz pre pouzitie copy import copy A=[[1,2],[3,4],[5,6]] print("A1",A) B=A C=copy.deepcopy(A) B[0][1]=22 C[1][1]=222 print("A2",A) print("B",B) print("C",C) """