2011-03-30 6 views
3

저는 A 타입이 사각형 스파 스 매트릭스 인 타입 Ax = b 시스템의 해상도에 관여했습니다. x는 unknows의 벡터이고 (b는 계산해야 함) b는 마지막 요소 인 1에 대해 모든 0을 벡터화합니다. 행렬 A의 마지막 행은 정규화에 사용되므로 1로 채워집니다.Matlab - 희소 행렬 시스템 해상도

이 시스템의 솔루션은 가능성이 있으므로이 조건은 0<x(i)<1을 준수해야합니다.

시스템을 해결하기 위해 Matlab 명령 x = A \ b;이 사용됩니다.

이 방법은 잘 작동하는 것처럼 보이지만, 벡터 x가 음수 값을 포함하고있는 특별한 경우가 있습니다. 매트릭스 A의 모든 요소에 매우 작은 값 (10^-6)을 추가하면 해상도가 다시 조건을 충족시킵니다.

나는 수학자 아니에요, 그래서 코드 문제인지 모르겠어요, 또는 행렬 A는 몇 가지 특성을 존중해야하는 경우처럼 소리

+0

가 음의 값 위치 :

매트릭스 (사각형이)의 확률이있는 관련 문제는 이것이다? 얼마나 정확하게'Ax = b'가 결과 값'x' (음수 값 포함)에 의해 만족되고'max (x, 0)/sum (max (x, 0))'(무차별 대입 및 정규화 수정) 'Ax = b'보다 나은 또는 나쁜 해결책? –

+0

그게 무슨 가치가 있는지, 나는이 코드에서 오류가 아니라 누적 된 숫자 오류의 결과 같아요. 큰 방정식 시스템을 풀 때마다 항상 약간의 오류가 발생할 수 있습니다. 'x = A \ b;라고 쓰면 계산의 정확성을 높이면서 솔루션의 정확성을 향상시킬 수 있습니다. x = x - A \ (A * x-b); '; (1) Ax-b가 더 작은 솔루션 및/또는 (2) 부정적인 요소가 없거나 부정적인 솔루션을 제공합니까? –

+0

@Gareth 답장을 보내 주셔서 감사합니다. 음수 값은 10^-3 정도이므로 무시할 수 없습니다. 나는 당신의 해결책을 시도해 보았다 : (1) 정확도가 떨어지고, (2) 음의 값이 여전히 존재한다. – Beppe

답변

2

0과 1. 솔루션은 모든 것을 보장하기 위해 당신이 정말로 원하는 것은 다음과 같습니다 : 최소화 || Ax-b || 모든 x에 대해 x> 0이됩니다. 함수 lsqlin을 사용하면 이렇게 할 수 있습니다 : http://www.mathworks.com/help/toolbox/optim/ug/lsqlin.html

'반드시 1에 덧붙여 야합니다'는 선형 동등 제약 조건입니다. 양수성은 선형 부등식 제약 조건입니다. 당신은 매우 작은 수 http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=5717139