目录
概论
预备知识
微积分
十进制小数分数与二进制的转换
误差分析
第二章 非线性方程求解
非迭代方法
二分法
试值法 割线法
迭代方法
不动点迭代 线性收敛
牛顿迭代
单根二阶收敛 m重根 收敛速度 1-1/m
割线法 多点迭代
收敛速度
第三章 非线性方程组
范数
向量范数
直接解法
Gauss消元
三角分解 LU分解
迭代解法
Jacobi迭代法
Gauss-Seidel迭代法
超松弛(SOR)迭代法
负梯度下降法
概论
主要内容:设计高效可靠算法获得近似解 解决实际问题
预备知识
微积分
中值定理:均值定理
Taylor展开:在x=x0处利用关于(x=x0)n次多项式逼近函数
![](https://i-blog.csdnimg.cn/blog_migrate/441833aa47d6ebabf9689a6c6d741a7a.png)
十进制小数分数与二进制的转换
分数:将分子分母分别转成二进制,短除
小数:
整数部分,该数对2 求余 将商和余数写下 直到商为0 【结果逆序写出】
![](https://i-blog.csdnimg.cn/blog_migrate/46ce029ae5eb4b3ab306383cf0ebe971.png)
小数部分:【顺序写出】
1.用2乘十进制小数,可以得到积,将积的整数部分取出
2.再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出
3.重复操作,直到积中的小数部分为零,此时0或1为二进制的最后一位,或者达到所要求的精度为止
![](https://i-blog.csdnimg.cn/blog_migrate/556d16b9ce0ef7662c8de9338eceb5a3.png)
误差分析
来源:模型误差,观测,舍入(计算机有限长)方法误差(求近似解时出现问题)
近似值P* 精确值P
绝对误差E=|P-P*|
相对误差:R=E/P 绝对误差/精确值
有效数字:评价近似数对真实值而言的有效性
![](https://i-blog.csdnimg.cn/blog_migrate/55422f17c0882abe7997f0ebdcc9405f.png)
P*作为近似数对P的有效性
误差传播
- 加法运算:和的误差=每个加数误差和
- 乘法运算:
数值稳定性:输入数据有扰动,计算过程误差不增长
病态问题:模型本身有问题,输入有扰动结果影响较大
减少运算误差的原则:
- 避免相近两数相减
- 防止“大数吃掉小数” 计算机字长有限 进行加减运算对阶时小数向大数看齐,会舍掉部分小数
- 绝对值太小的数不宜做除数
- 简化计算步骤,减少运算次数
第二章 非线性方程求解
求解非线性方程的根:
- 判断根的存在性
- 确定跟的分布范围
- 根的精确化
在有根的前提下求方程近似根
最优化问题,找最优解
非迭代方法
二分法
终止条件:
![](https://i-blog.csdnimg.cn/blog_migrate/d0dff9ac3a503b822d874207dc253a64.png)
- 缺点:
- 无法求多根以及偶重根
- 收敛速度慢,多跟可通过缩小区间解决
- 优点
- 简单
- 对f(x)要求不高 连续即可
试值法 割线法
- 通过两点之间割线与x轴交点确定新的区间
- 不可到达零点
迭代方法
重复进行一个计算过程
不动点迭代 线性收敛
f(x)=0 ==x=g(x)【迭代函数】
停止迭代条件,ε为事先给定的精度
![](https://i-blog.csdnimg.cn/blog_migrate/d8167c5325167719d26bb24dc61a9f07.png)
收敛条件:
前提:g(x)在[a,b]连续,在[a,b]导函数连续
满足:(1) g(x)的值[a,b] 成立 (2)0<g'(x)<1 【反证法可说明唯一性】
牛顿迭代
单根二阶收敛 m重根 收敛速度 1-1/m
利用傅里叶在某一点进行展开求近似
![](https://i-blog.csdnimg.cn/blog_migrate/a18a353f8a348efa4ec97012b65d8218.png)
几何解释
重复一下步骤 用切线方程求f(x)=0的根
![](https://i-blog.csdnimg.cn/blog_migrate/6cfa1cd673182f0ff8acb6245ca865d7.png)
提高收敛阶way
![](https://i-blog.csdnimg.cn/blog_migrate/9aabcb31828c2411e575ed05107fa7de.png)
割线法 多点迭代
收敛速度 (1+根号5)/2≈1.618
使用差商 代替牛顿迭代的导数 可以不用求导数
![](https://i-blog.csdnimg.cn/blog_migrate/344b1b28971109ba9c4ec8b4a66c62b9.png)
迭代公式
![](https://i-blog.csdnimg.cn/blog_migrate/877dd8e04c8bb9d916580923d8043143.png)
几何意义
![](https://i-blog.csdnimg.cn/blog_migrate/a81ca5afac2bf47edd4d597375cd8b29.png)
利用切线斜率 ≈割线斜率
收敛速度
用ek=|xk-x*|定义 lim ek+1/(ek+1)^p=C 则收敛阶为p
第三章 非线性方程组
范数
向量范数
- 1 范数 向量绝对值求和
- 2范数 向量每一个元素平方开根号
- 无穷范数 绝对值最大
矩阵范数
- 1范数 每一列元素绝对值求和 最大绝对值之和
![](https://i-blog.csdnimg.cn/blog_migrate/f74e2c59b30da6f2209977dbc1f728ae.png)
- 2范数 所有元素平方开根号
- 无穷范数
![](https://i-blog.csdnimg.cn/blog_migrate/8166d362a81580b3c0577b1e71fe11d9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fbe601ca2a21ecb161eb90763cc8bda3.png)
矩阵基础
- 矩阵不满足交换律
- 行列式是一个标量
直接解法
Gauss消元
利用初等变换对方程组转换成上三角矩阵 进行消去然后回代求值
注意:
- 行变换和列变换不能同时执行
- 每次计算选主元减小误差 消元前利用行变换把最大的放在主对角线上
![](https://i-blog.csdnimg.cn/blog_migrate/afde0f8dc9ce54bf4dd8d85dcad6093e.png)
三角分解 LU分解
不是分解
非奇异矩阵表示为下三角和上三角矩阵 A=LU
再用追赶法 Ly=b 求得y
再带入Ux=y 解x
其中L矩阵为标记矩阵 记录每一次进行系数调整的负数
m21 对于第一列 第二行-第一行所乘系数
![](https://i-blog.csdnimg.cn/blog_migrate/fedfa04f15928b1c34b9dfc19747910a.png)
eg
![](https://i-blog.csdnimg.cn/blog_migrate/4cc78b5c9f5b2fbd03b94f7eae9fcd13.png)
对于某些非奇异矩阵不能进行三角分解,引入置换矩阵 对原矩阵进行行变换 即可LU分解
迭代解法
迭代法是一种逐次逼近的方法,与直接法比较, 具有: 程序简单,存储量小的优点。
特别适用于求解系数矩阵为大型稀疏矩阵的方程组。
谱半径
ρ(B) 谱半径:矩阵的特征值的模的最大值
从属矩阵范数 就是1范数 2范数 无穷范数
![](https://i-blog.csdnimg.cn/blog_migrate/0fb050f3dc37838581a3d873e3e988bc.png)
Jacobi迭代法
求解Ax=b
det(A)非零的矩阵A 系数矩阵分裂成A=D-L-U
D为主对角线矩阵 L下三角 U上三角
![](https://i-blog.csdnimg.cn/blog_migrate/cd4c4d3109416e8af32a7a2fc9c2c7f4.png)
若对角线元素有等于0的情况 进行行列式变换
![](https://i-blog.csdnimg.cn/blog_migrate/26e58a0a7ebfbfe5bb74072fd1343747.png)
小解释
![](https://i-blog.csdnimg.cn/blog_migrate/4e6920f4162d9e1eb973987682a473b2.png)
xi之前的自变量求和,后面的Gauss-sildel优化会利用Xi之前已经算出的数据放进迭代过程
![](https://i-blog.csdnimg.cn/blog_migrate/ee2c526ac2ccd0bdd44e306b747d3892.png)
xi之后自变量求和
![](https://i-blog.csdnimg.cn/blog_migrate/47edcf86888cb151b7907a4ff3487e45.png)
Gauss-Seidel迭代法
利用算出来的X(k+1) 代替比Xk更接近真实Xk,Xk+1值 会有更快的迭代速度
![](https://i-blog.csdnimg.cn/blog_migrate/2581a39bceadf6193f2fa6a04799d942.png)
超松弛(SOR)迭代法
利用第k次迭代值和第k +1次的Gauss-Seidel迭代值作加权平均
![](https://i-blog.csdnimg.cn/blog_migrate/6546e51bff858d0797ba0f4e645b7e6a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f374461af50b189a12d4c70929acb3e0.png)
就是Gauss-Sildel 迭代公式 ,用高斯赛德尔和上一次xi结果计算加权平均,w=1时超松弛算法即为高斯赛德尔迭代方法
负梯度下降法
梯度下降法是指每次沿着函数值下降最快的方向寻找最小值点,函数值下降最快的方向是函数的负梯度方向
对于正定矩阵找到驻点就找到了最小值
![](https://i-blog.csdnimg.cn/blog_migrate/642bb0e0beec9cbd8b6354c685bda0f0.png)
方法一:先垂直于切线下降,直到与另一个切线方向垂直停止