0

I am taking a Linear Algebra for Data Science class through DeepLearning.AI, and one of the exercises has a linear system of equation problem, where you define 3 functions (MultiplyRow, AddRows, SwapRows) to apply elementary operations to the defined matrix A, performing row reduction according to the given instructions.

A = np.array([     
            [2, -1, 1, 1],
            [1, 2, -1, -1],
            [-1, 2, 2, 2],
            [1, -1, 2, 1]    
        ], dtype=np.dtype(int)) 
    b = np.array([6,3,14,8], dtype=np.dtype(int))

def MultiplyRow(M, row_num, row_num_multiple):
        M_new = M.copy()
        M_new[row_num] = M_new[row_num] * row_num_multiple
        return M_new
    
    def AddRows(M, row_num_1, row_num_2, row_num_1_multiple):
        M_new = M.copy()   
        M_new[row_num_2] = row_num_1_multiple * M_new[row_num_1] + M_new[row_num_2]
        return M_new

    def SwapRows(M, row_num_1, row_num_2):
        M_new = M.copy()
        M_new[[row_num_1, row_num_2]] = M_new[[row_num_2, row_num_1]]
        return M_new
    def augmented_to_ref(A, b):    
        A_system = np.hstack((A, b.reshape((4, 1))))
        print(A_system)

# swap row 0 and row 1 of matrix A_system (remember that indexing in NumPy array startsfrom0)
        A_ref = SwapRows(A_system, 0, 1)
    
        # multiply row 0 of the new matrix A_ref by -2 and add it to the row 1
        A_ref = AddRows(A_ref, 0, 1, -2)
    
        # multiply row 0 of the new matrix A_ref by -1 and add it to the row 3
        A_ref = AddRows(A_ref, 0, 3, -1)
    
        # add row 2 of the new matrix A_ref to the row 3, replacing row 3
        A_ref = AddRows(A_ref, 2, 3, 1)
    
        # swap row 1 and 3 of the new matrix A_ref
        A_ref = SwapRows(A_ref, 1, 3)
    
        # add row 2 of the new matrix A_ref to the row 3, replacing row 3
        A_ref = AddRows(A_ref, 2, 3, 1)
    
        # multiply row 1 of the new matrix A_ref by -4 and add it to the row 2
        A_ref = AddRows(A_ref, 1, 2, -4)
    
        # add row 1 of the new matrix A_ref to the row 3, replacing row 3
        A_ref = AddRows(A_ref, 1, 3, 1)
        
        # multiply row 3 of the new matrix A_ref by 2 and add it to the row 2
        A_ref = AddRows(A_ref, 3, 2, 2)
    
        # multiply row 2 of the new matrix A_ref by -8 and add it to the row 3
        A_ref = AddRows(A_ref, 2, 3, -8)
    
        # multiply row 3 of the new matrix A_ref by -1/17
        A_ref = MultiplyRow(A_ref, 3, (-1/17))
    
        return A_ref

    A_ref = augmented_to_ref(A, b)

    print(A_ref)

Expected output:

[[ 1  2 -1 -1  3]
 [ 0  1  4  3 22]
 [ 0  0  1  3  7]
 [ 0  0  0  1  1]]

The output I am getting here is:

[[ 1  2 -1 -1  3]
 [-1 -1  5  4 19]
 [-1 -2  2  4  4]
 [ 0  0  0  1  0]]
mkrieger1
  • 19,194
  • 5
  • 54
  • 65
mush
  • 1
  • 1
  • Is your question how you can figure out where the operations are going wrong? – mkrieger1 Jun 21 '23 at 00:07
  • Yes. I was doing what the exercise told me to do. I did each row operation by hand as well and was getting the same answers. So, either my algebra was wrong by hand and code, or the instructions are not leading me to the expected output. Still trying to figure out which it is – mush Jun 21 '23 at 00:41
  • Does this answer your question? [How to step through Python code to help debug issues?](https://stackoverflow.com/questions/4929251/how-to-step-through-python-code-to-help-debug-issues) – mkrieger1 Jun 21 '23 at 01:13
  • Please trim your code to make it easier to find your problem. Follow these guidelines to create a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example). – Community Jun 21 '23 at 15:43

0 Answers0