mirror of
https://github.com/DeaDvey/mathgenerator.git
synced 2025-11-28 06:25:23 +01:00
@@ -2,3 +2,4 @@ pytest
|
|||||||
hypothesis
|
hypothesis
|
||||||
flake8
|
flake8
|
||||||
autopep8
|
autopep8
|
||||||
|
sympy
|
||||||
@@ -76,3 +76,4 @@ from .angleBtwVectorsFunc import *
|
|||||||
from .absoluteDifferenceFunc import *
|
from .absoluteDifferenceFunc import *
|
||||||
from .vectorDotFunc import *
|
from .vectorDotFunc import *
|
||||||
from .binary2sComplement import *
|
from .binary2sComplement import *
|
||||||
|
from .matrixInversion import *
|
||||||
|
|||||||
68
mathgenerator/funcs/matrixInversion.py
Normal file
68
mathgenerator/funcs/matrixInversion.py
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
from .__init__ import *
|
||||||
|
|
||||||
|
def matrixInversion(SquareMatrixDimension=3, MaxMatrixElement=99, OnlyIntegerElementsInInvertedMatrix=False):
|
||||||
|
if OnlyIntegerElementsInInvertedMatrix is True:
|
||||||
|
isItOk = False
|
||||||
|
Mat = list()
|
||||||
|
while (isItOk is False):
|
||||||
|
Mat = list()
|
||||||
|
for i in range(0, SquareMatrixDimension):
|
||||||
|
z = list()
|
||||||
|
for j in range(0, SquareMatrixDimension):
|
||||||
|
z.append(0)
|
||||||
|
z[i] = 1
|
||||||
|
Mat.append(z)
|
||||||
|
MaxAllowedMatrixElement = math.ceil(
|
||||||
|
pow(MaxMatrixElement, 1 / (SquareMatrixDimension)))
|
||||||
|
randomlist = random.sample(
|
||||||
|
range(0, MaxAllowedMatrixElement + 1), SquareMatrixDimension)
|
||||||
|
|
||||||
|
for i in range(0, SquareMatrixDimension):
|
||||||
|
if i == SquareMatrixDimension - 1:
|
||||||
|
Mat[0] = [j + (k * randomlist[i])
|
||||||
|
for j, k in zip(Mat[0], Mat[i])]
|
||||||
|
else:
|
||||||
|
Mat[i + 1] = [j + (k * randomlist[i])
|
||||||
|
for j, k in zip(Mat[i + 1], Mat[i])]
|
||||||
|
|
||||||
|
for i in range(1, SquareMatrixDimension - 1):
|
||||||
|
Mat[i] = [sum(i)
|
||||||
|
for i in zip(Mat[SquareMatrixDimension - 1], Mat[i])]
|
||||||
|
|
||||||
|
isItOk = True
|
||||||
|
for i in Mat:
|
||||||
|
for j in i:
|
||||||
|
if j > MaxMatrixElement:
|
||||||
|
isItOk = False
|
||||||
|
break
|
||||||
|
if isItOk is False:
|
||||||
|
break
|
||||||
|
|
||||||
|
random.shuffle(Mat)
|
||||||
|
Mat = sympy.Matrix(Mat)
|
||||||
|
Mat = sympy.Matrix.transpose(Mat)
|
||||||
|
Mat = Mat.tolist()
|
||||||
|
random.shuffle(Mat)
|
||||||
|
Mat = sympy.Matrix(Mat)
|
||||||
|
Mat = sympy.Matrix.transpose(Mat)
|
||||||
|
|
||||||
|
else:
|
||||||
|
randomlist = list(sympy.primerange(0, MaxMatrixElement + 1))
|
||||||
|
plist = random.sample(randomlist, SquareMatrixDimension)
|
||||||
|
randomlist = random.sample(
|
||||||
|
range(0, MaxMatrixElement + 1), SquareMatrixDimension * SquareMatrixDimension)
|
||||||
|
randomlist = list(set(randomlist) - set(plist))
|
||||||
|
n_list = random.sample(
|
||||||
|
randomlist, SquareMatrixDimension * (SquareMatrixDimension - 1))
|
||||||
|
Mat = list()
|
||||||
|
for i in range(0, SquareMatrixDimension):
|
||||||
|
z = list()
|
||||||
|
z.append(plist[i])
|
||||||
|
for j in range(0, SquareMatrixDimension - 1):
|
||||||
|
z.append(n_list[(i * SquareMatrixDimension) + j - i])
|
||||||
|
random.shuffle(z)
|
||||||
|
Mat.append(z)
|
||||||
|
Mat = sympy.Matrix(Mat)
|
||||||
|
problem = 'Inverse of Matrix ' + str(Mat) + ' is:'
|
||||||
|
solution = str(sympy.Matrix.inv(Mat))
|
||||||
|
return problem, solution
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
import random
|
import random
|
||||||
import math
|
import math
|
||||||
import fractions
|
import fractions
|
||||||
|
import sympy
|
||||||
from .funcs import *
|
from .funcs import *
|
||||||
|
|
||||||
genList = []
|
genList = []
|
||||||
@@ -161,3 +162,4 @@ angleBtwVectors=Generator("Angle between 2 vectors", 70, "Angle Between 2 vector
|
|||||||
absoluteDifference=Generator("Absolute difference between two numbers", 71, "Absolute difference betweeen two numbers a and b =", "|a-b|", absoluteDifferenceFunc)
|
absoluteDifference=Generator("Absolute difference between two numbers", 71, "Absolute difference betweeen two numbers a and b =", "|a-b|", absoluteDifferenceFunc)
|
||||||
vectorDot = Generator("Dot Product of 2 Vectors", 72, "a . b = ", "c", vectorDotFunc)
|
vectorDot = Generator("Dot Product of 2 Vectors", 72, "a . b = ", "c", vectorDotFunc)
|
||||||
binary2sComplement = Generator("Binary 2's Complement", 73, "2's complement of 11010110 =", "101010", binary2sComplementFunc)
|
binary2sComplement = Generator("Binary 2's Complement", 73, "2's complement of 11010110 =", "101010", binary2sComplementFunc)
|
||||||
|
invertmatrix = Generator("Inverse of a Matrix", 74, "Inverse of a matrix A is", "A^(-1)", matrixInversion)
|
||||||
|
|||||||
Reference in New Issue
Block a user