1

현재 물에 화학 첨가물을 처리하는 iOS 앱을 개발 중입니다. 가능한 한 가장 작은 추가를 찾기 위해 Ax = B를 풀고 있는데, 여기서 A는 6x6 행렬이고 B는 하나의 열입니다. 지금까지 내가 읽었던 Accelerate Framework의 LAPACK이 이것을 처리하는 가장 좋은 방법입니다. 나는 DGESV_를 사용하여 작은 추가 작업을 할 수 있었지만, 큰 것들은 x에 대해 약간의 음수 값을 갖는다. 이는 음의 양의 화학 물질을 추가 할 수 없으므로 문제입니다.LAPACK을 사용하여 Ax = B를 해결합니다. 여기서 x> = 0

내가 알아야 할 것은 LAPACK에 Ax = B에 대한 최소 솔루션을 찾을 수있는 함수가 있는지 여부입니다. 여기서 x는 항상 0보다 크거나 같습니까? 그렇지 않다면, 대안 솔루션이 있습니까? (직접 수학을하는 것 외에)?

는 A가 결핍 순위 경우를 제외하고

+0

A가 순위 부족이 아니라면 Ax = B는 단 하나의 해답을가집니다. 당신은 A가 항상 순위가 낮다고 말하고 있습니까? – Gene

답변

3

, 사각형과 Ax = B의 솔루션은 고유 감사드립니다. 따라서 답변에서 부정적인 요소를 없애는 방법은 없습니다. 당신이 A와 B는 음의 구성 요소의 원인이 있지만, 모든 음이 아닌 구성 요소와 함께 "근처"해결책을 찾기 위해 싶습니다 오류가 포함되어있을 수 있습니다 가정하면

, 당신은이 캐스팅 수 :

minimize |Ax - b| subject to x >= 0 

이를 2 차 프로그램입니다. 이러한 문제를 해결할 도서관이 있지만 LAPACK은 그 중 하나가 아닙니다.

편집

귀하의 매트릭스는 전체 순위입니다. Wolfram Alpha은 이와 같은 작은 문제로 놀기에 매우 좋습니다. 귀하의 6x6은 5x10^11의 결정력을 가지므로 매우 정돈되어 있습니다.

QP에 대한 전문가는 아니지만 특별한 구조를 가지고 있습니다. 표준 양식 (Wikipedia for notation 참조),로 재 작성 : 차 계수 행렬 Q = A'A이, 대칭 긍정적 인 확실한입니다 여기에

minimize (x'(A'A)x + (-2b'A)x) subject to x >= 0 

가있는 (내가 제대로 내 행렬 대수를 리콜하고있는 경우), 시스템 볼록하게하고 해결하기 쉽습니다 : 단일 글로벌 솔루션이 보장됩니다. 참고 c = -2b'A.

Here is a page of QP libraries (일부는 C) 및 일부는 볼록 케이스에 최적화되어 있습니다. 아마도 그들 중 하나가 당신을 위해 일할 것입니다.

+0

맞아, 나는 나의 선형 대수학에서 조금 녹슬어서 내 마음을 완전히 뛰어 넘었다. A = [ 61.5 0.0 0.0 147.4 0.0 0.0 0.0 0.0 103.9 0.0 165.0 0.0 0.0 26.1 0.0 103.0 0.0 0.0 72.0 0.0 0.0 0.0 127.4 0.0 0.0 0.0 72.0 0.0 0.0 190.0 105.8 0.0 0.0 0.0 0.0 158.4] 내가 엉망이 아닌 이상, 나는 이것이 최고급이라고 생각한다. 가까운 솔루션을 찾을 수있는 Objective-C 호환 라이브러리에 대해 알고 있습니까? 편집 : 서식을 사용하여 행렬을 삭제하지 못했습니다. 잘하면 그것은 너무 혼란스럽지 않습니다. –

+0

수정 사항을 참조하십시오. – Gene

+0

완벽합니다.이 라이브러리 중 일부는 꽤 유망 해 보입니다.이 중 하나를 사용할 수있을 것이라고 생각합니다. 답변을 upvote 할 수 있으면 좋겠지 만, 그 점에 대해서는 15 가지의 평판이 필요합니다. 안내 주셔서 감사합니다. –