the matlab code and the output i was expecting (gauss elimination method)
my code in python:
import numpy as np
A = np.array([
[1,2,-1,1],
[-1,4,3,1],
[2,1,1,1]])
n = rows = len(A)
col = len(A[0])
for i in range(n):
A[i,:] = A[i,:] / A[i,i]
for j in range(n):
if i==j:
pass
else:
A[j,:] = A[j,:] - (A[i,:] * A[j,i])
print(A)
the output i got:
[[1 0 0 1]
[0 1 0 0]
[0 0 1 0]]
CodePudding user response:
Your problem is related to casting. Without info, numpy
cast your matrix to integer numbers, so when you divide, the result is not a float. For example 2 / 6 = 0
and not 0.33333
.
If you put
A = np.array([
[1,2,-1,1],
[-1,4,3,1],
[2,1,1,1]], dtype=float)
your result will be
[[1. 0. 0. 0.33333333]
[0. 1. 0. 0.33333333]
[0. 0. 1. 0.]]
In matlab there is not this problem because your starting matrix is already casted to floating point numbers.