4.23文创礼盒,买2个减5元 读书月福利
欢迎光临中图网 请 | 注册
> >
数值分析中的常用算法与编程实现

数值分析中的常用算法与编程实现

作者:令锋
出版社:科学出版社出版时间:2023-03-01
开本: B5 页数: 196
中 图 价:¥61.6(7.0折) 定价  ¥88.0 登录后可看到会员价
加入购物车 收藏
运费6元,满69元免运费
?快递不能达地区使用邮政小包,运费14元起
云南、广西、海南、新疆、青海、西藏六省,部分地区快递不可达
本类五星书更多>

数值分析中的常用算法与编程实现 版权信息

数值分析中的常用算法与编程实现 内容简介

本书阐述现代科学与工程计算中各种常用算法及其编程实现方法,内容包括设计数值算法的原则、非线性方程的数值解法、线性方程组的直接法与迭代法、函数插值法与*小二乘拟合法、数值积分法与数值微分法、常微分方程初值问题的数值解法、矩阵特征值与特征向量计算的数值方法等。每章首先阐述基础知识要点,然后给出详细的算法描述,*后通过说明性实例给出实现算法的完整程序。在各章*后部分针对介绍的算法配备了较丰富的编程计算习题,并在附录中给出了全部习题的参考答案。

数值分析中的常用算法与编程实现 目录

目录
第1章 设计数值算法应遵循的原则 1
1.1通过简化计算步骤尽量减少运算次数 1
1.1.1知识要点 1
1.1.2算法描述 2
1.1.3编程实现举例 2
1.2避免两个很相近的近似值相减 3
1.2.1知识要点 3
1.2.2算法描述 4
1.2.3编程实现举例 5
1.3防止大数“吃掉”小数 6
1.3.1知识要点 6
1.3.2算法描述 6
1.3.3编程实现举例 7
1.4避免除数绝对值过小的除法运算 8
1.4.1知识要点 8
1.4.2算法描述 9
1.4.3编程实现举例 9
1.5尽量采用数值稳定的算法 10
1.5.1知识要点 10
1.5.2算法描述 13
1.5.3编程实现举例 13
编程计算习题 1 14
第2章 一元非线性方程的数值解法 16
2.1对分区间法 16
2.1.1知识要点 16
2.1.2算法描述 17
2.1.3编程实现举例 17
2.2不动点迭代法 18
2.2.1知识要点 18
2.2.2算法描述 19
2.2.3编程实现举例 20
2.3 Steffensen加速法 21
2.3.1知识要点 21
2.3.2算法描述 22
2.3.3编程实现举例 22
2.4 Newton迭代法 23
2.4.1知识要点 23
2.4.2算法描述 24
2.4.3编程实现举例 25
2.5割线法 27
2.5.1知识要点 27
2.5.2算法描述 28
2.5.3编程实现举例 28
编程计算习题 2 29
第3章 线性方程组的直接法 31
3.1 Gauss列主元消去法 31
3.1.1知识要点 31
3.1.2算法描述 32
3.1.3编程实现举例 33
3.2 LU分解法 34
3.2.1知识要点 34
3.2.2算法描述 37
3.2.3编程实现举例 38
3.3对称正定方程组的 Cholesky分解法 42
3.3.1知识要点 42
3.3.2算法描述 44
3.3.3编程实现举例 45
3.4三对角方程组的追赶法 48
3.4.1知识要点 48
3.4.2算法描述 50
3.4.3编程实现举例 50
编程计算习题 3 51
第4章 线性方程组的迭代法 53
4.1 Jacobi迭代法 53
4.1.1知识要点 53
4.1.2算法描述 55
4.1.3编程实现举例 55
4.2 Gauss-Seidel迭代法 58
4.2.1知识要点 58
4.2.2算法描述 59
4.2.3编程实现举例 59
4.3逐次超松弛迭代法 61
4.3.1知识要点 61
4.3.2算法描述 62
4.3.3编程实现举例 63
编程计算习题 4 65
第5章 插值法与拟合法 68
5.1 Lagrange插值法 68
5.1.1知识要点 68
5.1.2算法描述 69
5.1.3编程实现举例 70
5.2 Newton插值法 71
5.2.1知识要点 71
5.2.2算法描述 73
5.2.3编程实现举例 73
5.3分段线性插值法 74
5.3.1知识要点 74
5.3.2算法描述 76
5.3.3编程实现举例 77
5.4分段三次 Hermite插值法 78
5.4.1知识要点 78
5.4.2算法描述 79
5.4.3编程实现举例 79
5.5三次样条插值法 81
5.5.1知识要点 81
5.5.2算法描述 85
5.5.3编程实现举例 86
5.6曲线拟合的昀小二乘法 92
5.6.1知识要点 92
5.6.2算法描述 93
5.6.3编程实现举例 94
编程计算习题 5 98
第6章 数值积分与数值微分 101
6.1复化求积公式 101
6.1.1知识要点 101
6.1.2算法描述 103
6.1.3编程实现举例 104
6.2变步长梯形求积公式 106
6.2.1知识要点 106
6.2.2算法描述 107
6.2.3编程实现举例 107
6.3 Romberg求积公式 108
6.3.1知识要点 108
6.3.2算法描述 109
6.3.3编程实现举例 110
6.4 Gauss-Legendre求积公式 111
6.4.1知识要点 111
6.4.2算法描述 113
6.4.3编程实现举例 114
6.5变步长数值微分法 115
6.5.1 知识要点 115
6.5.2 算法描述 117
6.5.3 编程实现举例 118
编程计算习题 6 120
第7章 常微分方程初值问题的数值解法 122
7.1 Euler方法 122
7.1.1知识要点 122
7.1.2算法描述 123
7.1.3编程实现举例 123
7.2 Runge-Kutta法 125
7.2.1知识要点 125
7.2.2算法描述 125
7.2.3编程实现举例 126
7.3 Adams方法 127
7.3.1知识要点 127
7.3.2算法描述 130
7.3.3编程实现举例 131
7.4一阶微分方程组与高阶微分方程初值问题的数值解法 134
7.4.1知识要点 134
7.4.2算法描述 136
7.4.3编程实现举例 136
编程计算习题 7 138
第8章 矩阵特征值与特征向量计算的数值方法 139
8.1乘幂法 139
8.1.1知识要点 139
8.1.2算法描述 141
8.1.3编程实现举例 141
8.2反幂法 142
8.2.1知识要点 142
8.2.2算法描述 144
8.2.3编程实现举例 144
8.3 Jacobi方法 147
8.3.1知识要点 147
8.3.2算法描述 150
8.3.3编程实现举例 151
8.4 QR方法 153
8.4.1知识要点 153
8.4.2算法描述 161
8.4.3编程实现举例 163
编程计算习题 8 169
附录 A 编程计算习题参考答案 171
编程计算习题 1 171
编程计算习题 2 171
编程计算习题 3 172
编程计算习题 4 173
编程计算习题 5 174
编程计算习题 6 174
编程计算习题 7 175
编程计算习题 8 176
附录 B Matlab数据文件操作基本方法 179
参考文献 183
展开全部

数值分析中的常用算法与编程实现 节选

第1章 设计数值算法应遵循的原则 数值算法是由各种基本运算和规定的运算顺序构成的、用于在计算机上求解特定问题的完整方案,简称为算法 . 数值分析的基本任务就是构造求解各种数学问题的数值算法,分析算法的误差,研究算法的收敛性和数值稳定性,通过编程和上机实现算法求出问题的数值解,并将求得的结果与相应的理论结果或可能的实验结果作对比分析和图形展示,验证算法的有效性. 描述算法可用自然语言、流程图以及伪代码,其中伪代码用介于自然语言和计算机算法语言之间的文字和运算符描述算法思想和执行过程,不用图形符号,书写简单,修改方便,格式紧凑,且便于程序设计和实现 . 因此,本书采用伪代码描述算法. 为控制数值计算过程中的误差传播和积累,确保计算结果满足精度要求,设计数值算法时必须遵循一定的基本原则,本章介绍五个重要的原则. 1.1通过简化计算步骤尽量减少运算次数 1.1.1 知识要点 对于同一个计算问题,如果能减少运算次数,不但可节省计算时间,而且能减少舍入误差的积累 . 因此,设计数值算法的一个重要原则就是通过简化计算步骤尽量减少运算次数. 例分析计算如下多项式的值所需要的乘法与加法次数 . 解若直接计算 axk (k= 0,1, ., n) ,再逐项相加,则需要做的乘法的次数为 2 需要做的加法次数为 n次. 若先将多项式改写为如下形式 即构造秦九韶算法递推公式 (1.1) 则需要做的乘法和加法次数都是 n次. 1.1.2 算法描述 计算多项式 p(x)在点x0处的值的秦九韶算法如下. 算法 1-1:秦九韶算法 1)输入多项式的次数 n. 2)按降幂顺序输入多项式各次项的系数 . 3)输入点 4) 5)如果,计算;否则,转步骤 7). 6)转步骤 5). 7)输出计算结果 8)结束 1.1.3编程实现举例 例 1-1用秦九韶算法求多项式 7x5 .3x4 +5x2 +11 在 x0 =1.27 和.1.34 两点的值. 解 Matlab程序如下: 1.2避免两个很相近的近似值相减 1.2.1 知识要点 设 x*和 y*分别为精确值 x和 y的近似值,则 z* = x* . y*是精确值 z = x . y的一个近似值,z*的相对误差 Er() 满足 (1.2) 上式表明,如果 x*和 y*是两个很相近的近似值,则非常小,因而 z*的相对误差可能会很大. 例设 x =1000,取 4位有效数字,仿机器计算的值. 解直接计算得 若先对公式作恒等变形,然后再进行计算,则有 恒等变形后再计算的结果有 4位有效数字,而直接计算只有 1位有效数字,直接计算导致有效数字产生了严重损失 . 因此,避免两个很相近的近似值相减是设计数值算法要遵循的重要原则 . 当出现两个近似值相减的运算时,应利用恒等式或等价关系先对计算公式作变形,避免两个很相近的近似值的减法运算,然后再进行计算. 根据代数基本定理,实系数一元二次方程在复数域内一定存在两个根. 解实系数一元二次方程ax2 +bx c 0 ( a ≠0) 在复数域内的根时,根据求根公式,当b2 .4ac >0 时,方程有两个实数根 (1.3) 当b2-4ac =0 时,方程有二重实根 (1.4) 当b2 -4ac <0 时,方程无实数根,但有一对共轭复根 (1.5) 从式( 1.3)可以看到,求两个实数根的公式中,一定有一个要进行两数相减运算. 当时,将出现两个很相近的近似值相减的情形 . 为减少有效数字的损失,应先利用不含两个很相近的近似值相减的求根公式求出其中一个根,如 其中符号函数 sign(b)表示取数 b的符号, 再根据一元二次方程根与系数的关系,求出方程的另一个根 1.2.2 算法描述 在复数域内求一元二次方程的两个根的算法如下: 算法 1-2:求实系数一元二次方程在复数域内的根 1)输入方程的系数 a, b, c. 2)计算 3)如果,则计算,输出计算 结果,转步骤 6);否则,转步骤 4). 4)如果 Δ=0,则计算,输出计算结果,转步骤 6);否则,转步骤 5). 5)计算,输出计算结果 . 6)结束 1.2.3编程实现举例 例 1-2求实系数一元二次方程 ax2 +bx +c =0 ( a ≠0) 在复数域内的两个根,要求精确到小数点后第 6位,其中实系数 a, b和 c通过键盘输入 . 解 Matlab程序如下: 1.3防止大数“吃掉”小数 1.3.1 知识要点 计算机进行算术运算时首先要对阶,将参与运算的两个数都写成绝对值小于 1且阶码相同的数,然后再进行计算 . 当两个量级相差很大的数相加时,由于计算机的字长固定,能表示的有效数字位数有限,绝对值很小的数可能会被大数“吃掉”,严重影响计算结果的可靠性 . 例如, x=6.78×108 +0.12 在计算机上将被记为 若计算机只能表示 8位小数,则计算结果为 x=0.678 ×10-9 ,较小的数 0.12被“吃掉”了 . 因此,为提高计算精度,设计数值算法时要避免绝对值很小的数与大数直接相加,防止大数“吃掉”小数 . 由此也可看到,在计算机上进行加法运算时,交换律与结合律可能并不成立. 设数 a为一个很大的数,一批绝对值相对于数 a很小的数 i(1,2, .n) 存储于一个数据文件中,要计算和 (1.6) 读入数据文件中各个绝对值相对很小的数后,为防止大数“吃掉”小数,应该先计算出,再与 a相加,不能按从左到右的顺序将很大的数与绝对值很小的数逐个相加. 1.3.2 算法描述 计算一个大数与存储于数据文件中的一批绝对值相对很小的数之和的算法如下:

商品评论(0条)
暂无评论……
书友推荐
编辑推荐
返回顶部
中图网
在线客服