2012-01-16 70 views
1

給定一個矢量A=[a_1, a_2, a_3,...,a_n],其中a_i是整數,現在求解方程 ∑a_i x_i=0其中x_i> = 0,x_i爲整數。如何設置所有係數爲正值使用Mathematica求解整數方程?

使用Mathematica,我們可以寫一些類似的代碼 Solve[A . Table[x[i], {i, n}] = 0 && Table[x[i] > 0, {i, n}], Integers] 但上述Table[x[i] > 0條件不正確編碼。它應該是x[1]>0 && x[2]>0 && x[3]>0 &&...x[n]>0。有沒有簡單的方法來編寫這樣的代碼?

回答

4

您想使用Reduce而不是Solve,因爲Reduce可以處理不等式。至於迴轉Table[x[i] > 0, {i, n}]x[1] > 0 && ... && x[n] > 0這是簡單的:

And @@ Table[x[i] > 0, {i, n}] 

其使用的Apply@@)短形式轉

List[x[1] > 0, ..., x[n] > 0] 

And[x[1] > 0, ..., x[n] > 0] 

或者,更直觀地,

x[1] > 0 && ... && x[n] > 0 
相關問題