Advertisement
Oppaceted

reduction_to_canonical_form

May 20th, 2024
673
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.45 KB | None | 0 0
  1. #reduction_to_canonical_form
  2. from drawing import ShowMatrixElement, ShowTable
  3.  
  4. '''
  5. (1 2) |1 0 0
  6. (3 4) |0 1 0
  7. (5 6) |0 0 1
  8. '''
  9.  
  10.  
  11. def SetToCanon (A: int, N: int, M: int, more: bool) -> None:
  12.     for i in range(M):
  13.         for j in range(M):
  14.             if j == i:
  15.                
  16.                 A[i].append( (more-0.5000)*(-2) )
  17.             else:
  18.                 A[i].append(0)
  19.     ShowMatrixElement(A, -1, -1)
  20.     '''-> (int, int)'''
  21. def ChooseVariables(A: list, B: list, W: list) -> (int, int):
  22.     M = len(A) # количество уравнений/строк
  23.     N = len(A[0]) # количество переменных/столбцов
  24.     '''W = []
  25.    for i in range(N):
  26.        temp_int = 0
  27.        for j in range(M):
  28.            temp_int = temp_int + A[j][i]
  29.        W.append(temp_int)'''
  30.     #print(W) #отладка
  31.     stolbec_number = 0
  32.     for i in range( len(W) ):
  33.         if W[i] < W[stolbec_number]:
  34.             stolbec_number = i
  35.     #print(W[stolbec_number])#отладка
  36.     stroka_number = 0
  37.     for i in range( len(A) ):
  38.         if abs( B[i]/A[i][stolbec_number] ) < abs(B[stroka_number]/A[stroka_number][stolbec_number]) :
  39.             stroka_number = i
  40.     print(A[stroka_number][stolbec_number])#отладка
  41.     return (stroka_number, stolbec_number)
  42.            
  43. #def ChangeVariables(A: list, B: list, [stroka_number, stolbec_number] ):
  44. #def ChangeVariables(A: list, B: list, W: list, stroka_number, stolbec_number, column: list, headers: list):
  45. def ChangeVariables(A: list, B: list, stroka_number, stolbec_number, column: list, headers: list):
  46.     B[stroka_number] = B[stroka_number]/A[ stroka_number ][ stolbec_number ]*-1
  47.     for j in range( len(A[0]) ):
  48.         if (j != stolbec_number):
  49.             A[ stroka_number ][j] = A[ stroka_number ][j]/A[ stroka_number ][ stolbec_number ]*-1
  50.     A[stroka_number][stolbec_number] = 1/A[ stroka_number ][ stolbec_number ]
  51.    
  52.     for i in range(len(A)):
  53.         if i == stroka_number:
  54.             continue
  55.         else:
  56.             B[i] += B[stroka_number]*A[i][stolbec_number]
  57.             for j in range(len(A[0])):
  58.                 if j != stolbec_number:
  59.                     A[i][j] += A[i][stolbec_number]*A[stroka_number][j]
  60.                 A[i][stolbec_number] *= A[stroka_number][stolbec_number]
  61.                    
  62.  
  63.     column[stroka_number], headers[stolbec_number] = headers[stolbec_number], column[stroka_number]
  64.     ShowTable(A, B, column, headers)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement