In [12]:
import numpy as np
from numpy.linalg import inv
N = 3
def flip_mat(mat, r, c):
mat[r, c] = 1 - mat[r, c]
if r >= 1:
mat[r-1, c] = 1 - mat[r-1, c]
if c >= 1:
mat[r, c-1] = 1 - mat[r, c-1]
if r + 1 < N:
mat[r+1, c] = 1 - mat[r+1, c]
if c + 1 < N:
mat[r, c+1] = 1 - mat[r, c+1]
data = [np.mat(np.zeros((N, N))) for _ in range(N * N)]
for idx in range(N * N):
r = idx // N
c = idx % N
flip_mat(data[idx], r, c)
A = np.mat(np.zeros((N * N, N * N)))
for idx in range(N * N):
for r in range(N):
for c in range(N):
A[r * N + c, idx] = data[idx][r,c]
print(A)
B = inv(A)
print(B)
[[ 1. 1. 0. 1. 0. 0. 0. 0. 0.]
[ 1. 1. 1. 0. 1. 0. 0. 0. 0.]
[ 0. 1. 1. 0. 0. 1. 0. 0. 0.]
[ 1. 0. 0. 1. 1. 0. 1. 0. 0.]
[ 0. 1. 0. 1. 1. 1. 0. 1. 0.]
[ 0. 0. 1. 0. 1. 1. 0. 0. 1.]
[ 0. 0. 0. 1. 0. 0. 1. 1. 0.]
[ 0. 0. 0. 0. 1. 0. 1. 1. 1.]
[ 0. 0. 0. 0. 0. 1. 0. 1. 1.]]
[[-0.14285714 0.57142857 -0.14285714 0.57142857 -0.28571429 -0.42857143
-0.14285714 -0.42857143 0.85714286]
[ 0.57142857 -0.28571429 0.57142857 -0.28571429 0.14285714 -0.28571429
-0.42857143 0.71428571 -0.42857143]
[-0.14285714 0.57142857 -0.14285714 -0.42857143 -0.28571429 0.57142857
0.85714286 -0.42857143 -0.14285714]
[ 0.57142857 -0.28571429 -0.42857143 -0.28571429 0.14285714 0.71428571
0.57142857 -0.28571429 -0.42857143]
[-0.28571429 0.14285714 -0.28571429 0.14285714 0.42857143 0.14285714
-0.28571429 0.14285714 -0.28571429]
[-0.42857143 -0.28571429 0.57142857 0.71428571 0.14285714 -0.28571429
-0.42857143 -0.28571429 0.57142857]
[-0.14285714 -0.42857143 0.85714286 0.57142857 -0.28571429 -0.42857143
-0.14285714 0.57142857 -0.14285714]
[-0.42857143 0.71428571 -0.42857143 -0.28571429 0.14285714 -0.28571429
0.57142857 -0.28571429 0.57142857]
[ 0.85714286 -0.42857143 -0.14285714 -0.42857143 -0.28571429 0.57142857
-0.14285714 0.57142857 -0.14285714]]
In [13]:
import numpy as np
from numpy.linalg import inv
N = 5
def flip_mat(mat, r, c):
mat[r, c] = 1 - mat[r, c]
if r >= 1:
mat[r-1, c] = 1 - mat[r-1, c]
if c >= 1:
mat[r, c-1] = 1 - mat[r, c-1]
if r + 1 < N:
mat[r+1, c] = 1 - mat[r+1, c]
if c + 1 < N:
mat[r, c+1] = 1 - mat[r, c+1]
data = [np.mat(np.zeros((N, N))) for _ in range(N * N)]
for idx in range(N * N):
r = idx // N
c = idx % N
flip_mat(data[idx], r, c)
A = np.mat(np.zeros((N * N, N * N)))
for idx in range(N * N):
for r in range(N):
for c in range(N):
A[r * N + c, idx] = data[idx][r,c]
print(A)
B = inv(A)
print(B)
[[ 1. 1. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0.]
[ 1. 1. 1. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0.]
[ 0. 1. 1. 1. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 1. 1. 1. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 1. 1. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0.]
[ 1. 0. 0. 0. 0. 1. 1. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0.]
[ 0. 1. 0. 0. 0. 1. 1. 1. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 1. 0. 0. 0. 1. 1. 1. 0. 0. 0. 1. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 1. 0. 0. 0. 1. 1. 1. 0. 0. 0. 1. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 1. 0. 0. 0. 1. 1. 0. 0. 0. 0. 1. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 1. 1. 0. 0. 0. 1. 0. 0.
0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 1. 1. 1. 0. 0. 0. 1. 0.
0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 1. 1. 1. 0. 0. 0. 1.
0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 1. 1. 1. 0. 0. 0.
1. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 1. 1. 0. 0. 0.
0. 1. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 1. 1. 0.
0. 0. 1. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 1. 1. 1.
0. 0. 0. 1. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 1. 1.
1. 0. 0. 0. 1. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 1.
1. 1. 0. 0. 0. 1. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0.
1. 1. 0. 0. 0. 0. 1.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0.
0. 0. 1. 1. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0.
0. 0. 1. 1. 1. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.
0. 0. 0. 1. 1. 1. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
1. 0. 0. 0. 1. 1. 1.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 1. 0. 0. 0. 1. 1.]]
[[ 2.50000000e+00 -9.00719925e+15 9.00719925e+15 9.00719925e+15
-1.80143985e+16 9.00719925e+15 3.25757576e-01 -9.00719925e+15
1.24242424e+00 9.00719925e+15 -9.00719925e+15 9.00719925e+15
4.54545455e-02 -9.00719925e+15 9.00719925e+15 -9.00719925e+15
-1.75757576e+00 9.00719925e+15 -9.24242424e-01 -9.00719925e+15
1.80143985e+16 -9.00719925e+15 -9.00719925e+15 9.00719925e+15
1.00000000e+00]
[ -4.50359963e+15 6.75539944e+15 -2.25179981e+15 -6.75539944e+15
9.00719925e+15 -2.25179981e+15 -2.87878788e-01 2.25179981e+15
-4.64962121e-01 -2.25179981e+15 6.75539944e+15 -6.75539944e+15
-2.72727273e-01 6.75539944e+15 -6.75539944e+15 2.25179981e+15
8.47537879e-01 -2.25179981e+15 4.62121212e-01 2.25179981e+15
-9.00719925e+15 6.75539944e+15 2.25179981e+15 -6.75539944e+15
4.50359963e+15]
[ 4.50359963e+15 2.25179981e+15 -6.75539944e+15 -2.25179981e+15
9.00719925e+15 -6.75539944e+15 -7.34848485e-01 6.75539944e+15
-8.07765152e-01 -6.75539944e+15 2.25179981e+15 -2.25179981e+15
4.09090909e-01 2.25179981e+15 -2.25179981e+15 6.75539944e+15
8.79734848e-01 -6.75539944e+15 7.65151515e-01 6.75539944e+15
-9.00719925e+15 2.25179981e+15 6.75539944e+15 -2.25179981e+15
-4.50359963e+15]
[ 4.50359963e+15 -6.75539944e+15 2.25179981e+15 6.75539944e+15
-9.00719925e+15 2.25179981e+15 8.33333333e-01 -2.25179981e+15
1.01041667e+00 2.25179981e+15 -6.75539944e+15 6.75539944e+15
1.11022302e-16 -6.75539944e+15 6.75539944e+15 -2.25179981e+15
-1.30208333e+00 2.25179981e+15 -9.16666667e-01 -2.25179981e+15
9.00719925e+15 -6.75539944e+15 -2.25179981e+15 6.75539944e+15
-4.50359963e+15]
[ -9.00719925e+15 4.50359963e+15 4.50359963e+15 -4.50359963e+15
-7.00000000e+00 4.50359963e+15 -1.28787879e-01 -4.50359963e+15
-8.99621212e-01 4.50359963e+15 4.50359963e+15 -4.50359963e+15
-2.27272727e-01 4.50359963e+15 -4.50359963e+15 -4.50359963e+15
7.25378788e-01 4.50359963e+15 1.21212121e-01 -4.50359963e+15
7.00000000e+00 4.50359963e+15 -4.50359963e+15 -4.50359963e+15
9.00719925e+15]
[ 4.50359963e+15 2.25179981e+15 -6.75539944e+15 -2.25179981e+15
9.00719925e+15 -6.75539944e+15 -3.78787879e-02 6.75539944e+15
-7.77462121e-01 -6.75539944e+15 2.25179981e+15 -2.25179981e+15
2.27272727e-01 2.25179981e+15 -2.25179981e+15 6.75539944e+15
9.10037879e-01 -6.75539944e+15 4.62121212e-01 6.75539944e+15
-9.00719925e+15 2.25179981e+15 6.75539944e+15 -2.25179981e+15
-4.50359963e+15]
[ -1.83333333e+00 -5.00000000e-01 3.33333333e-01 0.00000000e+00
0.00000000e+00 -3.33333333e-01 6.96969697e-01 3.33333333e-01
3.03030303e-02 6.66666667e-01 -5.00000000e-01 5.00000000e-01
-1.81818182e-01 -6.66666667e-01 0.00000000e+00 1.00000000e+00
3.03030303e-02 -6.66666667e-01 -3.03030303e-01 0.00000000e+00
0.00000000e+00 1.33333333e+00 1.00000000e+00 -3.33333333e-01
1.00000000e+00]
[ -4.50359963e+15 -2.25179981e+15 6.75539944e+15 2.25179981e+15
-9.00719925e+15 6.75539944e+15 1.89393939e-01 -6.75539944e+15
2.62310606e-01 6.75539944e+15 -2.25179981e+15 2.25179981e+15
-1.36363636e-01 -2.25179981e+15 2.25179981e+15 -6.75539944e+15
-4.25189394e-01 6.75539944e+15 -3.10606061e-01 -6.75539944e+15
9.00719925e+15 -2.25179981e+15 -6.75539944e+15 2.25179981e+15
4.50359963e+15]
[ -3.00000000e-01 6.00000000e-01 -3.00000000e-01 0.00000000e+00
0.00000000e+00 7.50000000e-01 3.03030303e-02 -9.00000000e-01
6.96969697e-01 9.00000000e-01 6.75000000e-01 0.00000000e+00
-1.81818182e-01 -7.50000000e-02 -6.00000000e-01 4.50000000e-01
-3.03030303e-01 9.00000000e-01 3.03030303e-02 4.50000000e-01
-3.00000000e-01 -9.00000000e-01 7.50000000e-01 -2.25000000e-01
1.50000000e-01]
[ 4.50359963e+15 2.25179981e+15 -6.75539944e+15 -2.25179981e+15
9.00719925e+15 -6.75539944e+15 -7.04545455e-01 6.75539944e+15
-1.10795455e-01 -6.75539944e+15 2.25179981e+15 -2.25179981e+15
2.27272727e-01 2.25179981e+15 -2.25179981e+15 6.75539944e+15
5.76704545e-01 -6.75539944e+15 7.95454545e-01 6.75539944e+15
-9.00719925e+15 2.25179981e+15 6.75539944e+15 -2.25179981e+15
-4.50359963e+15]
[ -4.50359963e+15 6.75539944e+15 -2.25179981e+15 -6.75539944e+15
9.00719925e+15 -2.25179981e+15 -9.84848485e-01 2.25179981e+15
-4.95265152e-01 -2.25179981e+15 6.75539944e+15 -6.75539944e+15
-9.09090909e-02 6.75539944e+15 -6.75539944e+15 2.25179981e+15
8.17234848e-01 -2.25179981e+15 7.65151515e-01 2.25179981e+15
-9.00719925e+15 6.75539944e+15 2.25179981e+15 -6.75539944e+15
4.50359963e+15]
[ 4.50359963e+15 -6.75539944e+15 2.25179981e+15 6.75539944e+15
-9.00719925e+15 2.25179981e+15 4.39393939e-01 -2.25179981e+15
9.49810606e-01 2.25179981e+15 -6.75539944e+15 6.75539944e+15
3.63636364e-01 -6.75539944e+15 6.75539944e+15 -2.25179981e+15
-1.36268939e+00 2.25179981e+15 -3.10606061e-01 -2.25179981e+15
9.00719925e+15 -6.75539944e+15 -2.25179981e+15 6.75539944e+15
-4.50359963e+15]
[ 0.00000000e+00 -5.55555556e-01 6.94444444e-01 -1.11111111e+00
5.55555556e-01 -5.55555556e-01 -1.81818182e-01 -1.38888889e-01
-1.81818182e-01 4.16666667e-01 -5.55555556e-01 1.11111111e+00
9.09090909e-02 -5.55555556e-01 0.00000000e+00 4.16666667e-01
-1.81818182e-01 0.00000000e+00 -1.81818182e-01 -4.16666667e-01
0.00000000e+00 1.11111111e+00 4.16666667e-01 0.00000000e+00
8.33333333e-01]
[ -4.50359963e+15 6.75539944e+15 -2.25179981e+15 -6.75539944e+15
9.00719925e+15 -2.25179981e+15 -3.48484848e-01 2.25179981e+15
-8.58901515e-01 -2.25179981e+15 6.75539944e+15 -6.75539944e+15
9.09090909e-02 6.75539944e+15 -6.75539944e+15 2.25179981e+15
1.45359848e+00 -2.25179981e+15 4.01515152e-01 2.25179981e+15
-9.00719925e+15 6.75539944e+15 2.25179981e+15 -6.75539944e+15
4.50359963e+15]
[ 4.50359963e+15 -6.75539944e+15 2.25179981e+15 6.75539944e+15
-9.00719925e+15 2.25179981e+15 8.03030303e-01 -2.25179981e+15
3.13446970e-01 2.25179981e+15 -6.75539944e+15 6.75539944e+15
1.81818182e-01 -6.75539944e+15 6.75539944e+15 -2.25179981e+15
-9.99053030e-01 2.25179981e+15 -9.46969697e-01 -2.25179981e+15
9.00719925e+15 -6.75539944e+15 -2.25179981e+15 6.75539944e+15
-4.50359963e+15]
[ -4.50359963e+15 -2.25179981e+15 6.75539944e+15 2.25179981e+15
-9.00719925e+15 6.75539944e+15 5.83333333e-01 -6.75539944e+15
3.22916667e-01 6.75539944e+15 -2.25179981e+15 2.25179981e+15
-5.00000000e-01 -2.25179981e+15 2.25179981e+15 -6.75539944e+15
-3.64583333e-01 6.75539944e+15 -9.16666667e-01 -6.75539944e+15
9.00719925e+15 -2.25179981e+15 -6.75539944e+15 2.25179981e+15
4.50359963e+15]
[ 8.33333333e-01 -9.16666667e-01 -6.66666667e-01 1.08333333e+00
-0.00000000e+00 -1.33333333e+00 3.03030303e-02 2.00000000e+00
-3.03030303e-01 -1.33333333e+00 -5.00000000e-01 6.66666667e-01
-1.81818182e-01 -6.66666667e-01 1.16666667e+00 3.33333333e-01
6.96969697e-01 -2.00000000e+00 3.03030303e-02 -0.00000000e+00
-3.33333333e-01 -7.50000000e-01 -1.00000000e+00 5.83333333e-01
-3.33333333e-01]
[ 4.50359963e+15 2.25179981e+15 -6.75539944e+15 -2.25179981e+15
9.00719925e+15 -6.75539944e+15 -9.84848485e-02 6.75539944e+15
-1.71401515e-01 -6.75539944e+15 2.25179981e+15 -2.25179981e+15
5.90909091e-01 2.25179981e+15 -2.25179981e+15 6.75539944e+15
5.16098485e-01 -6.75539944e+15 4.01515152e-01 6.75539944e+15
-9.00719925e+15 2.25179981e+15 6.75539944e+15 -2.25179981e+15
-4.50359963e+15]
[ 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00
0.00000000e+00 0.00000000e+00 -3.03030303e-01 0.00000000e+00
3.03030303e-02 -2.00000000e+00 -1.00000000e+00 1.00000000e+00
-1.81818182e-01 -1.00000000e+00 0.00000000e+00 -2.00000000e+00
3.03030303e-02 0.00000000e+00 6.96969697e-01 0.00000000e+00
0.00000000e+00 0.00000000e+00 -1.00000000e+00 0.00000000e+00
-1.00000000e+00]
[ -4.50359963e+15 -2.25179981e+15 6.75539944e+15 2.25179981e+15
-9.00719925e+15 6.75539944e+15 2.50000000e-01 -6.75539944e+15
6.56250000e-01 6.75539944e+15 -2.25179981e+15 2.25179981e+15
-5.00000000e-01 -2.25179981e+15 2.25179981e+15 -6.75539944e+15
-1.03125000e+00 6.75539944e+15 -2.50000000e-01 -6.75539944e+15
9.00719925e+15 -2.25179981e+15 -6.75539944e+15 2.25179981e+15
4.50359963e+15]
[ 9.00719925e+15 -4.50359963e+15 -4.50359963e+15 4.50359963e+15
4.86486486e+00 -4.50359963e+15 3.71212121e-01 4.50359963e+15
4.75378788e-01 -4.50359963e+15 -4.50359963e+15 4.50359963e+15
7.72727273e-01 -4.50359963e+15 4.50359963e+15 4.50359963e+15
-1.14962121e+00 -4.50359963e+15 1.21212121e-01 4.50359963e+15
-4.86486486e+00 -4.50359963e+15 4.50359963e+15 4.50359963e+15
-9.00719925e+15]
[ -4.50359963e+15 6.75539944e+15 -2.25179981e+15 -6.75539944e+15
9.00719925e+15 -2.25179981e+15 -9.54545455e-01 2.25179981e+15
-7.98295455e-01 -2.25179981e+15 6.75539944e+15 -6.75539944e+15
-2.72727273e-01 6.75539944e+15 -6.75539944e+15 2.25179981e+15
1.51420455e+00 -2.25179981e+15 7.95454545e-01 2.25179981e+15
-9.00719925e+15 6.75539944e+15 2.25179981e+15 -6.75539944e+15
4.50359963e+15]
[ -4.50359963e+15 -2.25179981e+15 6.75539944e+15 2.25179981e+15
-9.00719925e+15 6.75539944e+15 5.53030303e-01 -6.75539944e+15
6.25946970e-01 6.75539944e+15 -2.25179981e+15 2.25179981e+15
-3.18181818e-01 -2.25179981e+15 2.25179981e+15 -6.75539944e+15
-1.06155303e+00 6.75539944e+15 -9.46969697e-01 -6.75539944e+15
9.00719925e+15 -2.25179981e+15 -6.75539944e+15 2.25179981e+15
4.50359963e+15]
[ 4.50359963e+15 -6.75539944e+15 2.25179981e+15 6.75539944e+15
-9.00719925e+15 2.25179981e+15 5.00000000e-01 -2.25179981e+15
3.43750000e-01 2.25179981e+15 -6.75539944e+15 6.75539944e+15
-0.00000000e+00 -6.75539944e+15 6.75539944e+15 -2.25179981e+15
-9.68750000e-01 2.25179981e+15 -2.50000000e-01 -2.25179981e+15
9.00719925e+15 -6.75539944e+15 -2.25179981e+15 6.75539944e+15
-4.50359963e+15]
[ -1.00000000e+00 9.00719925e+15 -9.00719925e+15 -9.00719925e+15
1.80143985e+16 -9.00719925e+15 -7.50000000e-01 9.00719925e+15
-1.00000000e+00 -9.00719925e+15 9.00719925e+15 -9.00719925e+15
5.00000000e-01 9.00719925e+15 -9.00719925e+15 9.00719925e+15
2.00000000e+00 -9.00719925e+15 5.00000000e-01 9.00719925e+15
-1.80143985e+16 9.00719925e+15 9.00719925e+15 -9.00719925e+15
-0.00000000e+00]]
In [ ]:
Content source: amoshyc/LightsOff
Similar notebooks: