Krylov子空间与Arnoldi迭代

看师兄的代码,对于为什么预设一个矩阵是三对角的,纠结了很久,拿出纸笔写了写发现简直就是易得。由于感觉证明太过巧妙,特此记录

引子:Gram Schmitt 正交化步骤

学过线性代数的应该都知道,如果我们有一组线性无关但是不正交的向量组,我们有一套标准的方法,通过重新线性组合将其正交化,称为Gram Schimitt正交化步骤。具体的说,假定我们手上的向量组是\(\{x_1, x_2, ..., x_n\}\),我们进行如下操作:

\[
\begin{aligned}
&v_1 = x_1 / \|x_1\| \\
&i = 2, ..., n \\
&\quad v_i = x_i \\
&\quad j = 1, ..., i-1 \\
&\quad \quad v_i = v_i - v_j v_j^T v_i \\
&\quad v_i = v_i / \|v_i\|
\end{aligned}
\]

这样我们就拿到了一个正交归一的向量组\(\{v_1, v_2, ..., v_n\}\)

继续阅读

极值问题中的Fibonacci序列

(*虽然这学期分数出来了是跪了,还是把这一篇写完吧TAT*)
众所周知,在寻找单峰函数的极值问题中有一个著名的,总是带着华罗庚名字的\(0.618\)法,但是它实际上并不是这个思路下最优的算法。最优的算法直接和Fibonacci数列相联系。
这是我在看袁亚湘的《非线性优化数值计算方法》中看到的一个有关Fibonacci数列的一个算法,感觉很有意思。我尝试在他的基础上将这个算法讲的更清楚一些。

(*话说刷过不少blog后发现博主们都喜欢一些自己专业之外的小东西,毕竟自己专业的东西看起来要么太trival,要么就太难以向读者讲清楚了*)

继续阅读