2014-11-06 48 views
1

好吧,我有一個有6個不等式和3個變量的系統,以及一個可能或不可能解決這個系統的問題。爲了檢查這一點是否能夠解決不平等問題很簡單,我的問題是,它何時不能解決尋求解決問題的最近點的不平等問題。不等式的線性系統

我將提供這樣的系統的一個示例:斧< = B

A =

[ C11, C12, C13] 
[ -C21, -C22, -C23] 
[ C31, C32, C33] 
[ -C41, -C42, -C43] 
[ C51, C52, C53] 
[ -C61, -C62, -C63] 

B =

[ Cb1] 
[ Cb2] 
[ Cb3] 
[ Cb4] 
[ Cb5] 
[ Cb6] 

Pxyz =

[ pX, pY, pZ] 

不Pxyz解決Ax < = B?

if all(A*Pxyz<=b) 
accept point 
else 
get the closest point to Pxyz (by Euclidean distance) that solves the system. How? 
end 
+0

你能詳細解釋一下這個問題嗎?最接近什麼?什麼是措施? – Arpi 2014-11-06 10:47:06

+0

你可能想問一下http://math.stackexchange.com/還有 – 2014-11-06 11:01:03

+0

@Arpi嗨。最接近給定的點(Pxyz)。度量可以是Eucledian距離。 – ASantosRibeiro 2014-11-06 11:03:21

回答

3

編輯: 嘗試的其中一個(與2D問題測試):

方法1:

[Psol,fval,exitflag] = fmincon(@(Psol) norm(Pxyz-Psol), Pxyz, A, b) 

方法2:

如果我理解正確,你有一個約束線性最優化問題,更具體地說是一個約束線性最小二乘問題,可以使用lsqlin來解決。這將是這樣的:

if all(A*Pxyz <= b) 
    % accept point 
else 
    % get the closest point to Pxyz (by Euclidean distance) that solves the system 
    C = eye(length(b)); 
    [Psolu, resnorm, residual, exitflag] = lsqlin(C, Pxyz, A, b); 
end 

希望這有助於解決您的問題。

+0

似乎合乎邏輯。我會試一試。 – ASantosRibeiro 2014-11-06 11:44:41

+0

這是正確的「lsqlin(A,Pxyz,A,b)」?你應該把「A,Pxyz」作爲前兩個參數嗎?或者應該是lsqlin(A,b,A,b,[],[],[],[],Pxyz)? – ASantosRibeiro 2014-11-06 12:03:50

+0

你說得對,那是不正確的,我編輯了答案。 – Arpi 2014-11-06 12:50:28