Matlab lsqminnorm(R2017b引入)

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

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

对于inconsistent方程组求解,有以下实例:求解 2 x 1 + 3 x 2 = 8 2x_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使得 A x b \| Ax-b\| 最小。
lsqminnorm:在满足 A x b \| 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)

在这里插入图片描述
将不定方程与单位圆
从上图(不定方程与单位圆画在一起)可以看出lsqminnorm的解 x \|x\| 最小。

猜你喜欢

转载自blog.csdn.net/huangzhywin/article/details/89238873
今日推荐