Matlab lsqminnorm(Rb引入)

时间:2024-05-19 07:37:24

– 线性方程Ax=b的最小范数解。

  • 主要就是要注意该函数的解与A\b的不同。
  • 不需要pinv来得到方程的解。

对于inconsistent方程组求解,有以下实例:求解2x1+3x2=82x_1+3x_2=8

  1. 利用backslash求解。
A = [2 3];
b = 8;
x_a = A\b

x_a = 2×1

     0
2.6667
  1. 调用 lsqminnorm解得:
x_b = lsqminnorm(A,b)

x_b = 2×1

1.2308
1.8462

本质区别:backslash的解是得到x使得 Axb\| Ax-b\| 最小。
lsqminnorm:在满足 Axb\| Ax-b\| 最小的同时,要求 x\|x\| 最小。

s1 = {'Backslash'; 'lsqminnorm'};
s2 = {'norm_Ax_minus_b','norm_x'};
T = table([norm(A*x_a-b); norm(A*x_b-b)],[norm(x_a); norm(x_b)],'RowNames',s1,'VariableNames',s2)

Matlab lsqminnorm(R2017b引入)
Matlab lsqminnorm(R2017b引入)
从上图(不定方程与单位圆画在一起)可以看出lsqminnorm的解 x\|x\| 最小。