파이썬에서는 문제가 있습니다. 파이썬 2.X를 사용하고 나누기에 어려움이 있다는 것을 알고 있기 때문에 나는 from __future__ import division
을 추가했으며 지금까지는 잘 작동합니다. 하지만이 프로젝트에서 int를 float로 덮어 쓰려고 할 때 작동하지 않는다는 것을 알았습니다. 더 작은 프로젝트에서 테스트했지만 제대로 작동했습니다.파이썬은 int를 float로 덮어 쓰지 않습니다.
여기에 무엇이 잘못되었는지 실마리가 있습니까? b[j]
을 변경하지 않습니다
A = [
[3, 3, 3],
[1, 1, 2],
[1, 0, 3]
]
b = [0, 0, 3]
def gauss_elim(A,b):
print A[0], b[0]
print A[1], b[1]
print A[2], b[2]
n = len(A)
temp = []
temp_b = []
MAX = 0
te = [0,0,0]
for i in range(0,n-1):
k=i
for a in range(i,n-1):
### Pivotsearch Start ###
if math.fabs(A[a][i]) < math.fabs(A[a+1][i]):
MAX = (a+1)
temp = A[i]
A[i] = A[MAX]
A[MAX] = temp
temp_b = b[i]
b[i] =b[MAX]
b[MAX]=temp_b
### Pivotsearch End ###
for j in range(i+1, n):
if A[j][i] == 0:
continue
A[j][i] = A[j][i] - (A[j][i]/A[i][i] ) * A[i][i]
b[j] = (b[j] - (A[j][i])/(A[i][i])) #<<<< DOES NOT OVERWRITE
k = k + 1
print 'done:'
print A[0], b[0]
print A[1], b[1]
print A[2], b[2]
gauss_elim(A,b)
'float'은'int'보다 더 넓습니다 (더 커)? – Shark