引自Numerical Methods Using MATLAB(4版)书籍,如有侵权请联系删除
前言
这一章主要讲求解的方法。
学习过程
其中前面的内容都是在讲向量和矩阵,学过线代即可跳过。
方法一 高斯消除 Gauss Elimination
高斯消除主要分为两个步骤,一个为前向消除,一般指将矩阵化简为上三角矩阵,另一个为后向替代,指从最后一行开始替代求解。
其中,如果遇到对角线元素为0时,我们无法除0消除,这时候我们可以交换行使得对角线为0。
在运算过程中,我们可能会遇到计算误差,然后在逐步计算中传播误差,因此我们可以通过局部比例交换来解决这个问题。就是行交换,如何判断哪行交换可以更小的减少误差这点没看懂。好像是选出每行的最大绝对值,再让每列除最大绝对值,将权重最大的交换到前面?
病态矩阵:有一种矩阵它会因为微小的干扰而对结果产生较大的相对误差,比如近似于奇异矩阵,行列式近似于0,等式几乎都是平行等等这些情况。
方法二 LU分解 LU Factorization
非奇异矩阵可以分解为。其中为下三角矩阵,其对角线都为1,为上三角矩阵,其对角线不为0。
也有可能不能分解为,这时候可以通过排列矩阵使得。
方法三 Jacobi迭代
使用直接法会使得产生错误后这个错误就一直存在了,但是迭代法可以在之后将错误调整回来。
该迭代原理举例:
则迭代式可以为:
如果对角线元素大于其行上所有元素绝对值之和,则称是严格对角的。即如果是严格对角的,那么有唯一解。迭代式迭代的过程数列最后会收敛到。同理,Gauss-Seidel迭代也是如此。
方法四 Gauss-Seidel迭代
我们可以加速Jacobi迭代的收敛速度,于是提出了该方法。
对Jacobi迭代中的例子,Gauss-Seidel迭代的迭代式可以为:
Jacobi迭代和Gauss-Seidel迭代很相似,但在某些情况下,会出现Gauss-Seidel迭代不收敛而Jacobi迭代收敛的情况。
方法五 牛顿法拓展
对于多个方程式求解,牛顿法迭代也是一种方法,但是怎样的迭代式收敛,我们需要判断其前提条件。
Jacobi矩阵可以表示为
那么函数变化可以表示为
定理:对于三维的不动点迭代来说,如果初始值近似于不动点,且满足
那么这个迭代可以收敛到。
其迭代公式为:
方法六 Seidel迭代
针对牛顿法改进。
对于非线性方程组的牛顿迭代
词汇学习
octant 八分圆
orthogonal 正交的
determinant 行列式
scalar 标量
tractable 易处理的
cofactor 辅因子
invertible 可逆的
pivoting 交换
pivotal 关键的
equilibrate 平衡
perturbation 干扰
prone 俯卧
permutation 排列