2012-05-01 134 views
1

如果我有一組線性方程的(隨機矩陣產生):矩陣分割帶約束

2x + 4y + 6z = 4 
5x + 3y + 7z = 1 
9x + 7y + 3z = 6 

和欲解決xyz我只是做一個矩陣分割。但是,如果我想對此矩陣設置約束,例如x > 0x = 4,是否有這種方法?

是加入另一行正確,例如:

2x + 4y + 6z = 4 
5x + 3y + 7z = 1 
9x + 7y + 3z = 6 
1x + 0y + 0z = 1 <--- 

,並在那裏與更大的矩陣和更復雜的應用係數這些限制的一般方法是什麼?

+2

一般來說,只有一個選擇x,y,z滿足這三個方程。如果他們不滿足約束條件,你想要發生什麼?一般來說,你的「等式」和你的「約束」之間有什麼區別,當他們彼此不一致時你想要發生什麼? –

+0

同意@Gareth;一般而言,隨機選擇的係數不會導致一個單一的矩陣,所以會有一個解決方案。 –

+0

它構成流體模型的一部分,其中x y z對應於壓力,我想將它們中的一些設置爲大氣而不將它們從計算中移除。 – user1367738

回答

0

是的,你應該調查無論是拉格朗日乘子或單純形法,看看它是如何做。

0

在MATLAB中,對非負性約束(對所有變量)使用lsqnonneg。如果您有優化工具箱,那麼您將使用lsqlin解決不等式約束問題,或者只有某些變量受約束。

你當然可以使用LP求解像linprog,但如果你有linprog,那麼你也有lsqlin!我想你甚至可以使用quadprog求解器,但爲什麼要麻煩?使用正確的工具解決問題。

至於使用顯式迭代求解器來解決它像fmincon的想法,是的,你能做到這一點,但你會留下一個那麼精確結果需要更多的時間來解決。