(translator=roro, ChineseSource=roro-20020520-8\lsqnonneg.html, EnglishSource=c:\matlabr12\help\techdoc\ref\lsqnonneg.html)
MATLAB Function Reference    
lsqnonneg

無負數限制的線性最短距離

Syntax

Description

x = lsqnonneg(C,d) 傳回使 norm(C*x-d) 為最小值的向量 x,而 x >= 0。 C 及 d 必須為實數。

x = lsqnonneg(C,d,x0) 若所有 x0 >= 0, 則將其視為起始點;否則將使用預設值。預設的起始點為原點(當 x0==[ ] 或僅有兩個輸入參數時,也會使用預設值)。

x = lsqnonneg(C,d,x0,options) 依據最佳化參數 options 的結構使結果最小化。可藉 optimset 函式來定義此參數。 lsqnonneg 使用下述的 options 結構欄位:
Display
顯示的 層級。'off' 表示沒有輸出 ;'final' 代表只顯示最後的輸出結果; 'notify' (預設值)代表如果函式不收歛時,則顯示其輸出。
TolX
x 的端點誤差容忍度。

[x,resnorm] = lsqnonneg(...) 回傳餘下二次平方基準(squared 2-norm)的值: norm(C*x-d)^2。

[x,resnorm,residual] = lsqnonneg(...) 回傳剩下的數,即 C*x-d。

[x,resnorm,residual,exitflag] = lsqnonneg(...) 回傳 exitflag ,其敘述 lsqnonneg 函式的結束情況:

>0
表示該函式收歛於結果 x。
0
代表重覆計數已經超過極限了。增加容忍度(options 中的 TolX 參數)可能可以求得解。

[x,resnorm,residual,exitflag,output] = lsqnonneg(...) 回傳一含有下述運算資訊的結構 output:

output.algorithm
所使用的演算法
output.iterations
所使用的重覆數字

[x,resnorm,residual,exitflag,output,lambda] = lsqnonneg(...) 回傳雙倍的向量 lambdalambda(i) <= 0x(i) 為(近似於)0;lambda(i) 為(近似於)0x(i) > 0

Examples

以下是 lsqnonneg 函式對 4 * 2 矩陣問題的解:

函式 lsqnonneg 求出的解並沒有相當符合(有較大的剩餘)最短距離的解。然而,無負數的最短距離並沒有負數的成份。

Algorithm

lsqnonneg 使用 [1] 的演算法。此演算法起始於可能的群組基礎向量(basis vectors)並計算相關的雙倍向量 lambda。為了將基準和可能的其他選擇交換,其挑選基礎向量中於 lambda 對應的最大值,直到當 lambda <= 0 為止。

See Also

The arithmetic operator \, optimset

References

Lawson, C.L. and R.J. Hanson, Solving Least Squares Problems, Prentice-Hall, 1974, Chapter 23, p. 161.


 lscov lsqr