我有一個[8x4]矩陣,'A'和一個[8x1]矩陣,'B'。我如何檢查是否存在[4x1]矩陣'x',使得A * X = B
?線性規劃 - MATLAB
這可以使用MATLAB中的linprog
來完成,但我不確定如何給出約束條件。我試過x = linprog([],[],[],A,B);
,但這似乎不起作用。
如何指定條件x>=0
並將其優化爲A*X-B
,以便如果返回0,則知道存在X
。
更新:
在MATLAB pinv
不會在所有情況下工作。請看下面的例子:
A= [1 0 0 0
0 1 -1 -1
-1 -1 1 -1
-1 -1 -1 1
0 0 0 0
0 0 0 0
0 0 0 0
1 1 1 1]
B = [0
0
0
-1
0
0
0
1]
使用pinv
給出x的值:
X = [-2.7756e-017
0.5000
0.5000
0]
但當線性規劃使用我得到X爲:
X = [ 0
0.5000
0.5000
0]
這是之所以我選擇MATLAB中的linprog
工具。我剛剛以前面提到的方式使用了它,但它引發了很多警告。我仍然認爲有更好的方法來正確使用這個功能。它沒有拋出這個矩陣,但通常當我循環了很多矩陣我的命令窗口溢出與警告。
這是主要問題。我現在所做的是如果((A * pinv(A)* B)== B)那麼存在一個解決方案。其中pinv是matlab中的僞逆函數。我認爲線性編程很好地處理了這種情況。這就是爲什麼我正在尋找一種方法來做到這一點。 – 2011-02-04 03:04:53
+1用於記住我以前的問題。謝謝 – 2011-02-04 03:06:33
不,你不知道這是真的。在浮點運算中應用這種EXACT相等的測試將是真實的。使用linprog來嘗試做這個測試是愚蠢的。 – 2011-02-04 04:28:19