2011-03-30 207 views
3

我參與了類型爲Ax = b的系統的解析,其中A是方形稀疏矩陣,x是unknows的向量(我必須計算它),b是對於最後一個元素是1的所有零的向量excpet。 矩陣A的最後一行用於標準化,因此用1來滿足。Matlab - 稀疏矩陣系統分辨率

該系統的解決方案是概率,因此必須遵守條件0<x(i)<1

爲了解決該系統,使用了Matlab命令x = A \ b;

該方法似乎工作得很好,但有一個特殊情況,向量x也包含負值。爲矩陣A的任何元素添加一個非常小的值(10^-6),分辨率返回以滿足條件。

我不是數學家,所以我不知道這是否是一個代碼問題,或者如果矩陣A必須尊重一些屬性,以保證解決方案都爲0和1之間

+0

是負值,你會得到非常小? (x,0)/ sum(max(x,0))'得到的結果'x'(及其負值)滿足'Ax = b'的準確程度如何?暴力和固定正常化)對「Ax = b」的更好或更糟的解決方案? – 2011-03-30 16:07:22

+0

對於它的價值,我猜測這不是代碼中的錯誤,而是積累的數值錯誤的後果。解決大系統的方程總是容易出錯。你可能會提高解決方案的準確性,但需要花費額外的計算量,通過說'x = A \ b; x = x - A \(A * x-b);'; (1)「Ax-b」較小的解決方案和/或(2)否定元素不存在或負值較小的解決方案? – 2011-03-30 16:10:43

+0

@Gareth感謝您的回覆,負值大小爲10^-3,所以不容忽視。我甚至嘗試過你的解決方案,並且:(1)準確性降低,(2)負值仍然存在。 – Beppe 2011-03-31 08:44:40

回答