내 문제는 모든 행의 합계와 모든 열의 합이 0 인 행렬이 있다는 것입니다. 모든 숫자는 x 소수로 반올림됩니다.행렬에서 반올림 오류 제거
그런 다음 전체 행렬에 0과 1 사이의 숫자 (예 : 1/6)를 곱하고 모든 숫자를 x 소수 자릿수로 반올림합니다. 이제 행과 열의 합이 0이 될지 확신 할 수 없습니다. 가능한 가장 작은 조정 (또는 적어도 매우 작은 조정)으로 합계를 0으로 다시 설정합니다.
이러한 문제를 해결할 수있는 알고리즘이 있습니까? (아주 간단)
예 : 매트릭스 :
200 -200 0
400 400 -800
-600 -200 800
round2 ((1/6) * 매트릭스) 본질적으로 정밀 오류가 당신이 여기 겪고있는
33.33 -33.33 0
66.67 66.67 -133.33
-100 -33.33 133.33
난 그냥 대신 시험으로, 행과 열을 추가 한 것 합계가 특정 허용 오차보다 작은 경우 -이 경우 아마 abs (sum) <= 0.01' – Blazemonger
이것은 "알고리즘"질문이 아닙니다. 반올림하여 문제를 소개하고 어떤 방식으로 "복구"하는지에 관계없이 행렬 내의 특정 요소 사이의 대칭을 깨는 등의 다른 문제를 소개합니다. 수학 처리를위한 전체 값을 유지하면서 반올림을 "표시된"값으로 만 제한 할 수는 없습니까? 합을 잠재적으로 0이 아닌 '노이즈'가 여전히 있지만 "0"을 "허용 오차보다 작음"으로 정의하여 처리해야하는 문제입니다. –