当方程阶数较大的时,法方程的条件数变得非常大,需要使用QR分解来求解。
Ax=b
[Q,R] = qr(A,0); %
x = R\(Q'*b); %
为什么是这个代码,下面是原理:
因为
∥
c
2
∥
2
2
为
常
数
,
\|c_2\|_2^2为常数,
∥c2∥22为常数,所以上述方程可以在
R
x
=
c
1
Rx=c_1
Rx=c1的时候取得极值,是为最小二乘法的解。
即
x
=
R
−
1
(
Q
T
b
)
x=R^{-1} (Q^Tb)
x=R−1(QTb) (利用精简QR分解得到的R)