Compare commits
	
		
			3 Commits
		
	
	
		
			6eb450ddbe
			...
			a680f4bbd9
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| a680f4bbd9 | |||
| 4113d9885b | |||
| 9ddeaaf907 | 
| @ -1,6 +1,9 @@ | ||||
| import sympy as sp | ||||
| import time | ||||
| import random | ||||
| import readline | ||||
| 
 | ||||
| errs = (ValueError, TypeError) | ||||
| 
 | ||||
| def genmatrix(rowcol, intmax, dif) : | ||||
|     # generate a random matrices | ||||
| @ -20,7 +23,11 @@ def inmat(rowcol) : | ||||
|         mat[i]=input().split(" ") | ||||
|         for j in range(len(mat[i])) : | ||||
|             # convert list using nsimplify in order to take rational number symbolically | ||||
|             mat[i][j] = sp.nsimplify(mat[i][j]) | ||||
|             try : | ||||
|                 mat[i][j] = sp.nsimplify(mat[i][j]) | ||||
|             except errs : return False | ||||
|     try : mat = sp.Matrix(mat) | ||||
|     except errs : return False | ||||
|     return mat | ||||
| 
 | ||||
| # multcheck function to check if two matrices are multiplied together | ||||
| @ -28,41 +35,41 @@ def multcheck(a, b, rowcol, intmax) : | ||||
|     sp.pprint(b) | ||||
|     print("Multiply these two matrices together") | ||||
|     # return bool based on if input equals the two matrices multiplied together | ||||
|     return (sp.Matrix(inmat(rowcol)) == a*b) | ||||
|     return (inmat(rowcol) == a*b) | ||||
| 
 | ||||
| # detcheck function to check if the determinant of the matrix is correct | ||||
| def detcheck(a, b, rowcol, intmax): | ||||
|     det = sp.det(a) | ||||
|     # return bool based on if input equals determinant | ||||
|     return (det == sp.nsimplify(input("What is the determinant of this matrix?: "))) | ||||
|     try : d = sp.nsimplify(input("What is the determinant of this matrix?: ")) | ||||
|     except errs : return False | ||||
|     return (det == d) | ||||
| 
 | ||||
| # invcheck function to check if the inverse of the matrix is correct | ||||
| def invcheck(a, b, rowcol, intmax): | ||||
|     det = a.det() | ||||
|     if det != 0 : | ||||
|         # return bool based on if input equals inverse of matrix | ||||
|         print("What is the inverse of this matrix?") | ||||
|         return (sp.Matrix(inmat(rowcol)) == a.inv()) | ||||
|     # return bool based on if input equals inverse of matrix | ||||
|     print("What is the inverse of this matrix?") | ||||
|     return (inmat(rowcol) == a.inv()) | ||||
| 
 | ||||
| # eigcheck function to check if the eigenvalues are correct | ||||
| def eigcheck(a, b, rowcol, intmax): | ||||
|     eigs = a.eigenvals() | ||||
|     for i in range(len(eigs)) : | ||||
|         val = sp.nsimplify(input("Input eigenvalue: ")) | ||||
|         if not (val in eigs and eigs[val] == sp.nsimplify(input("Input its algebraic multiplicity: "))) : | ||||
|         try : | ||||
|             val = sp.nsimplify(input("Input eigenvalue: ")) | ||||
|             algm = sp.nsimplify(input("Input its algebraic multiplicity: ")) | ||||
|         except errs : return False | ||||
|         if not (val in eigs and eigs[val] == algm) : | ||||
|             # return false if the eigenvalue not in dictionary and wrong alg multiplicity | ||||
|             return False | ||||
|     return True | ||||
| 
 | ||||
| def diagcheck(a, b, rowcol, intmax): | ||||
|     return (a.diagonalize()[1] == sp.Matrix(inmat(rowcol))) | ||||
|     return (a.diagonalize()[1] == inmat(rowcol)) | ||||
| 
 | ||||
| # practice function | ||||
| def practice(t) : | ||||
|     count = 0 | ||||
|     rowcol = int(input("What size of matrix do you want to practice with? ")) | ||||
|     intmax = int(input("What maximum size of integer do you want the matrix to be made out of? ")) | ||||
|     dif = float(input("What difficulty (probability for a matrix of rational values between 0, 1) do you want? ")) | ||||
| 
 | ||||
|     # choose the function of the program that you want | ||||
|     if t == "mult" : | ||||
| @ -78,6 +85,15 @@ def practice(t) : | ||||
|     else : | ||||
|         exit() | ||||
| 
 | ||||
|     while True : | ||||
|         try : | ||||
|             rowcol = abs(int(input("What size of matrix do you want to practice with? "))) | ||||
|             intmax = abs(int(input("What maximum size of integer do you want the matrix to be made out of? "))) | ||||
|             dif = float(input("What difficulty (probability for a matrix of rational values between 0, 1) do you want? ")) | ||||
|             break | ||||
|         except errs: | ||||
|             continue | ||||
| 
 | ||||
|     # initialise time measurement | ||||
|     tic = time.perf_counter() | ||||
| 
 | ||||
| @ -92,6 +108,9 @@ def practice(t) : | ||||
|             if t == "diag" : | ||||
|                 while not a.is_diagonalizable : | ||||
|                     a = genmatrix(rowcol, intmax, dif) | ||||
|             if t == "inv" : | ||||
|                 while a.det() == 0 : | ||||
|                     a = genmatrix(rowcol, intmax, dif) | ||||
|             sp.pprint(a) | ||||
|             # if return of function is True | ||||
|             if f(a, b, rowcol, intmax) : | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user