只先写了一点点,有时间再慢慢补充
1一般的线性规划模型
m i n z = c T x s . t . A x = b x ≥ 0 min \,\,z=c^Tx\\ s.t. \,Ax=b \\\quad x\geq 0 minz=cTxs.t.Ax=bx≥0
1.1线性方程组 A m × n x = b A_{m\times n}x=b Am×nx=b
1.1.1直接解法
a.高斯消元法
适用于一般的规模较小的矩阵A和有特殊结构的大型稀疏矩阵。不要求
A
A
A为方阵,虽然教科书一般是以方阵为例子,为方阵的时候可用克拉默法则检验。
通过行变换将原矩阵变成上三角或下三角形式,消元过程时间复杂度为
O
(
n
3
)
O(n^3)
O(n3),回代计算复杂度为
O
(
n
2
)
O(n^2)
O(n2),所以算法时间复杂度为
O
(
n
3
)
O(n^3)
O(n3)。
缺陷很明显当主元为0时无法进行下去,即使主元非零但若其绝对值很小,尤其产生的舍入误差将被放大,所以有高斯列主元消去法,将当前主元所在列中绝对值最大的元素所在行与当前主元所在行交换。。
b.LU分解
要求矩阵是方阵
2.1高斯消元法的矩阵形式:
L
n
−
1
…
L
2
L
1
(
A
,
b
)
=
(
A
(
n
)
,
b
(
n
)
)
L_{n-1}\dots L_2L_1(A,b)=(A^{(n)},b^{(n)})
Ln−1…L2L1(A,b)=(A(n),b(n)),
令
L
=
L
1
−
1
L
2
−
1
…
L
n
−
1
−
1
L=L_1^{-1}L_2^{-1}\dots L_{n-1}^{-1}
L=L1−1L2−1…Ln−1−1,
U
=
A
(
n
)
U=A^{(n)}
U=A(n),可以得到
A
=
L
U
A=LU
A=LU.
解
A
x
=
b
Ax=b
Ax=b变成
L
y
=
b
,
U
x
=
y
Ly=b,Ux=y
Ly=b,Ux=y.
2.2直接LU分解(Doolittle分解)
A
=
L
U
A=LU
A=LU,单位下三角阵L与上三角阵U。
当然若A是n阶三对角矩阵且它时对角占优时,可以用LU分解来求解,此时也称作追赶法。
Crout分解
A
=
L
D
U
A=LDU
A=LDU,Doolittle分解中上三角阵U再次分解为对角阵D乘以单位上三角阵U的形式。
c.对称矩阵的分解
A
=
L
D
L
T
A=LDL^T
A=LDLT,L是单位下三角阵,D是对角阵(可由Crout分解证得)。
d.实对称正定阵的分解
A
=
L
L
T
A=LL^T
A=LLT,L是下三角矩阵。此时也称作平方根法,时间复杂度也是
O
(
n
3
)
O(n^3)
O(n3),具体上界比消元法低一些。
直接解法都是立足于系数矩阵A的分解,再回代计算方程组的解,解的得到过程是直接的。
1.1.2 经典迭代解法
a.一般的迭代
A
=
L
−
U
A=L-U
A=L−U,非奇异系数矩阵A直接拆分成下三角矩阵L与上三角矩阵U之和。要求 A严格对角占优或对称正定时,迭代收敛。
A
x
=
b
⟹
(
L
−
U
)
x
=
b
⟹
L
x
=
U
x
+
b
⟹
x
=
L
−
1
U
x
+
L
−
1
b
⟹
x
k
+
1
=
L
−
1
U
x
k
+
L
−
1
b
Ax=b\Longrightarrow (L-U)x=b\Longrightarrow Lx=Ux+b\Longrightarrow x=L^{-1}Ux+L^{-1}b\Longrightarrow x^{k+1}=L^{-1}Ux^{k}+L^{-1}b
Ax=b⟹(L−U)x=b⟹Lx=Ux+b⟹x=L−1Ux+L−1b⟹xk+1=L−1Uxk+L−1b
L
−
1
U
L^{-1}U
L−1U的谱半径
ρ
(
L
−
1
U
)
<
1
\rho (L^{-1}U)<1
ρ(L−1U)<1或者说
L
−
1
U
L^{-1}U
L−1U的最大特征值要小于1.
b.Jacobi迭代
A
=
D
+
L
+
U
A=D+L+U
A=D+L+U,非奇异矩阵A直接拆分成对角阵D、下三角阵L与上三角阵U之和。
A
x
=
b
⟹
(
D
+
L
+
U
)
x
=
b
⟹
D
x
=
−
(
L
+
U
)
x
+
b
⟹
x
=
−
D
−
1
(
L
+
U
)
x
+
D
−
1
b
⟹
x
k
+
1
=
−
D
−
1
(
L
+
U
)
x
k
+
D
−
1
b
Ax=b\Longrightarrow (D+L+U)x=b\Longrightarrow Dx=-(L+U)x+b\Longrightarrow x=-D^{-1}(L+U)x+D^{-1}b\Longrightarrow x^{k+1}=-D^{-1}(L+U)x^k+D^{-1}b
Ax=b⟹(D+L+U)x=b⟹Dx=−(L+U)x+b⟹x=−D−1(L+U)x+D−1b⟹xk+1=−D−1(L+U)xk+D−1b
D
−
1
(
L
+
U
)
D^{-1}(L+U)
D−1(L+U)的谱半径
ρ
(
D
−
1
(
L
+
U
)
<
1
\rho (D^{-1}(L+U)<1
ρ(D−1(L+U)<1或者说
D
−
1
(
L
+
U
)
D^{-1}(L+U)
D−1(L+U)的最大特征值要小于1.
c.Gauss-Seidel迭代
A
=
D
+
L
+
U
A=D+L+U
A=D+L+U,非奇异矩阵A直接拆分成对角阵D、下三角阵L与上三角阵U之和。
A
x
=
b
⟹
(
D
+
L
+
U
)
x
=
b
⟹
(
D
+
L
)
x
=
−
U
x
+
b
⟹
x
=
−
(
D
+
L
)
−
1
U
x
+
(
D
+
L
)
−
1
b
⟹
x
k
+
1
=
−
(
D
+
L
)
−
1
U
x
k
+
(
D
+
L
)
−
1
b
Ax=b\Longrightarrow (D+L+U)x=b\Longrightarrow (D+L)x=-Ux+b\Longrightarrow x=-(D+L)^{-1}Ux+(D+L)^{-1}b\Longrightarrow x^{k+1}=-(D+L)^{-1}Ux^k+(D+L)^{-1}b
Ax=b⟹(D+L+U)x=b⟹(D+L)x=−Ux+b⟹x=−(D+L)−1Ux+(D+L)−1b⟹xk+1=−(D+L)−1Uxk+(D+L)−1b
(
D
+
L
)
−
1
U
(D+L)^{-1}U
(D+L)−1U的谱半径
ρ
(
(
D
+
L
)
−
1
U
)
<
1
\rho ((D+L)^{-1}U)<1
ρ((D+L)−1U)<1或者说
(
D
+
L
)
−
1
U
(D+L)^{-1}U
(D+L)−1U的最大特征值要小于1.
d.SOR迭代
就是对D做一些松弛,
D
w
\frac{D}{w}
wD,
0
<
w
<
2
0<w<2
0<w<2.
1.1.3 共轭梯度方法
共轭梯度法在数值优化一书中,是由解线性方程组引入的,根据A的不同,有线性与非线性之分。具体内容在数值优化的有关博文可以找到。