I'm trying to make a function where I can give it a matrix and the constants and solving it using crammers rule. This will soon be used with complex numbers.
import numpy as np
import sympy as smp
def crammer(matrix, constants):
     D = np.linalg.det(matrix)
     dets = []
     dets.append(D)
     for i in range(0, len(constants[0]), 1):
          Dv = matrix
          Dv[:, i:i+1] = constants.T
          print(Dv)
          Dd = np.linalg.det(Dv)
          dets.append(Dd)
return dets
Mat = np.array([[2, 1,-1],
                [3, 2, 2],
                [4,-2, 3]])
Con = np.array([[1,13,9]])
print(crammer(Mat, Con))
I get this as the result:
[33.000000000000014, 33.000000000000014, 0.0, 0.0]
The first two are right the Determinate is D:33 and Dx:33 but Dy and Dz should be Dy:66 and Dz: 99.
following Crammers Rule it should be:
[[ 1  1 -1]
 [13  2  2]
 [ 9 -2  3]]
[[ 2  1 -1]
 [ 3 13  2]
 [ 4  9  3]]
[[ 2  2  1]
 [ 3  2 13]
 [ 4 -2  9]]
when I print Dv at the beginning of the for loop I get the following:
[[ 1  1 -1]
 [13  2  2]
 [ 9 -2  3]]
[[ 1  1 -1]
 [13 13  2]
 [ 9  9  3]]
[[ 1  1  1]
 [13 13 13]
 [ 9  9  9]]
I tried printing the matrix at the top of the for loop as well and I get the same problem. As I can tell my for loop is is changing my original matrix and I don't understand why.
 
    