Difference between mldivide and lsqr

4 ビュー (過去 30 日間)
Jaehoon Jeong
Jaehoon Jeong 2023 年 7 月 21 日
編集済み: Bruno Luong 2023 年 7 月 21 日
Hi, I am curious about the difference between mldivide and lsqr.
Both seem to be used for calculating x where A*x=b.
Thank you in advance.

採用された回答

Bruno Luong
Bruno Luong 2023 年 7 月 21 日
編集済み: Bruno Luong 2023 年 7 月 21 日
The difference manifests obviously when you try to solve underdetermined linear system A*x = b.
A=rand(3,5)
A = 3×5
0.1391 0.7822 0.5816 0.3031 0.3500 0.4841 0.6309 0.9509 0.7327 0.0768 0.7137 0.8771 0.4724 0.4694 0.4100
b=rand(3,1)
b = 3×1
0.9778 0.2986 0.9737
The backslash returns a solution with most 0s and lsqr returns solution with minimum l2-norm.
xbackslash=A\b
xbackslash = 5×1
-0.4389 1.8328 -0.6786 0 0
xlsqr=lsqr(A,b)
lsqr converged at iteration 3 to a solution with relative residual 8.3e-14.
xlsqr = 5×1
-0.1969 1.1213 -0.1120 -0.3746 0.8767
xminnorm=lsqminnorm(A,b)
xminnorm = 5×1
-0.1969 1.1213 -0.1120 -0.3746 0.8767
Both minimize norm(A*x-b,2), in case not overdetermined system A*x match b (as withe example here)
A*xbackslash
ans = 3×1
0.9778 0.2986 0.9737
A*xlsqr
ans = 3×1
0.9778 0.2986 0.9737
norm(xbackslash)
ans = 2.0031
norm(xlsqr) % smaller even xlsqr has no O
ans = 1.4891
On the runtime the backslash is usualy faster, at least for dense matrix.

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSpecial Functions についてさらに検索

タグ

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by