# D. Scott
# Linear Algebra: TCI
# Code Challenge 8.1
# Find null space vector and test commutativity
import random
import numpy as np
from scipy.linalg import null_space
# generate and populate random matrices with same inner value
num1 = []
num2 = []
for i in range(0,12):
num1.append(random.randint(-6,12))
for i in range(0,12):
num2.append(random.randint(-6,12))
A1 = np.array(num1).reshape(4,3)
A2 = np.array(num2).reshape(3,4)
A = A1@A2
num1 = []
num2 = []
for i in range(0,12):
num1.append(random.randint(-6,12))
for i in range(0,12):
num2.append(random.randint(-6,12))
B1 = np.array(num1).reshape(4,3)
B2 = np.array(num2).reshape(3,4)
B = B1@B2
print("A:\n",A,"\nRank(A): ",np.linalg.matrix_rank(A),
"\n\nB:\n",B,"\nRank(B):",np.linalg.matrix_rank(B))
n = null_space(A)
print("\nBasis for N(A) [n]:\n",n)
print("\nB@A@n (zeros) = \n",B@A@n)
print("\nA@B@n = \n",A@B@n)
print("\nMatrix multiplication not commutative.")
A: [[ 43 -10 -39 51] [ -7 3 -2 -2] [126 -63 75 105] [ 29 -9 -11 13]] Rank(A): 3 B: [[ 12 -52 108 94] [154 104 36 172] [ 33 70 -68 -25] [160 176 -80 88]] Rank(B): 3 Basis for N(A) [n]: [[0.34055298] [0.92435809] [0.17027649] [0.02432521]] B@A@n (zeros) = [[ 9.09494702e-13] [ 1.81898940e-12] [-4.54747351e-13] [ 0.00000000e+00]] A@B@n = [[ 5412.91932134] [ 100.90098257] [13433.13657348] [ -133.13188949]] Matrix multiplication not commutative.