徐士良_常用算法程序集(C++语言描述)(第4版).pdf

所需积分/C币:49 2016-07-22 14:16:55 40.95MB PDF

本书中除收集了传统的算法外,还选取了一些新的、实用的算法。 书中收集的算法都是行之有效的,基本可以满足解决工程中各种实际问题的需要。
内容简介 本书是针对工程中常用且行之有效的算法而编写的,主要内容包括矩阵运算,矩阵特征值与特征向量 的计算,线性代数方程组的求解,非线性方程与方程组的求解,插值与逼近,数值积分,常微分方程组的求 解,数据处理,极值问题的求解复数、多项式与特殊函数的计算,查找与排序。 书中所有的算法程序均用C++描述,全部程序可从清华大学出版社网站上的本书页面下载。 本书可供广大科研人员、工程技术人员及管理工作者阅读使用,也可作为高等院校师生的参考书。 本书封面贴有清华大学出版杜防伪标签,无标签者不得销售。 版权所有,侵权必究。侵权举报电话:010-6278298913701121933 图书在版编目(C|P)数据 常用算法程序集(C艹语言描述)/徐士良编著.—4版.一北京:清华大学出版社,2009.7 (高等院校信息技术规划教材) ISBN978-7-302-19764-5 Ⅰ.常…Ⅱ.徐…Ⅲ.①工程计算程序一程序设计②C语言一程序设计Ⅳ.TP319 TP312 中国版本图书馆CIP数据核字(2009)第041162号 责任编辑:战晓雷林都嘉 责任校对:焦丽丽 责任印制:王秀菊 出版发行:清华大学出版社 地址:北京清华大学学研大厦A座 http://www.tup.com.cn 邮编:100084 社总机:010-62770175 邮购:010-62786544 投稿与读者服务:010-62776969,Service@tup.tsinghua.edu.cn 质量反馈:010-62772015,zhiliang@atup.tsinghua.edu.cn 印刷者:北京市人民文学印刷厂 装订者:三河市李旗庄少明装订厂 经销:全国新华书店 开本:185×260 印张:41 字数:1024千字 版次:2009年7月第4版 印次:2009年7月第1次印刷 印数:1~3000 定价:58.00元 本书如存在文字不清、漏印、缺页、倒页、脱页等印装质量问题,请与清华大学出版社出版部联系调换。 联系电话:010-62770177转3103产品编号:029618-01 前。言 FORWORD 本书是针对工程中常用且行之有效的算法而编写的,并且根据算法的分 类以及使用特点作了精心的组织和安排。本书具有以下几个特点: (1)书中除收集了传统的算法外,还根据作者工作的经验和近年来数值 计算的发展,选取了一些新的、实用的算法。可以说,书中各章几乎都有一些 新的算法。 (2)书中所有的算法程序都经过认真的调试 (3)本书全部的算法程序均可从清华大学出版社网站上的本书页面中 下载,读者可以从中方便地使用书中的每一个算法程序。 (4)书中收集的算法都是行之有效的,基本可以满足解决工程中各种实 际问题的需要, 书中程序是用C++描述的。根据问题的特点,采取了以下两种描述的 方法: 第一种方法是为每一个算法定义一个类。在这种类中,数据成员包括算 法所处理的数据以及一些重要参数(相当于面向过程程序设计中子程序的形 参),有时也将这个类中的各函数成员所用到的公共数据也作为类的数据成 员,以便于各函数成员间互相通信。算法所处理的数据以及一些重要参数 般事先由用户存放在一个文件中,各数据之间用若干个空格或回车换行进行 分隔。在这种类中,主要函数成员包括以下4种: (1)构造函数与析构函数。对于涉及到问題规模的数据(如矩阵阶数 多项式次数等)一般通过构造函数来提供,以便保证在创建该类对象的同时 为数据分配存储空间,并且在析构函数中释放这些空间。有时对于个别数据 也通过构造函数来提供。 (2)文件读人函数。在这个函数中,读入算法所需要处理的数据以及一 些重要参数。在执行这个函数过程中,程序会提示用户从键盘键入输入文 件名。 (3)实现算法的执行函数。有时还包括这个算法需要调用的其他一些 函数。 (4)输出函数。在这个函数中,将结果输出到一个文件中(文件名由用 户提供),但一般也在屏幕上显示,对于输出到文件中的结果纯粹是数据,不 Ⅱ常用算法程序集(C+语詈描述)(第四版) 加任何文字信息,各数据之间只用空格或回车换行作分隔,以便这些数据在以后再用程序处 理,而在屏幕上显示的结果中还包含有一些文字说明或格式,以便用户阅读。在执行这个函 数过程中,程序会提示用户从键盘键入输出文件名。 显然,用户使用这种算法是很方便的,只要事先准备好存放算法所处理的数据以及一些 重要参数的输人文件;然后编写一个主函数,该主函数包括创建该类的对象以及由这个对象 分别调用输入函数成员、执行算法的函数成员和输出函数成员语句;在执行程序的过程中, 用户只要根据程序的提示,由键盘分别键入输入函数名和输出函数名即可。程序执行完成 后,屏幕上即显示带有文字说明或格式的输出结果,在输出文件中同时被写进了输出的 数据 第二种方法是将若干同类算法封装在一个类中。例如,在本书的第10章中,将复数运 算封装成一个类,将实系数多项式运算封装成一个类,将复系数多项式运算封装成一个类, 以及将各种特殊函数的计算封装成一个类。 限于作者水平,书中难免有错误之处,恳请读者批评指正。 作者 2008年4月 且录 CONTENTS 第1章矩阵运算 1.1实矩阵相乘 1.2复矩阵相乘 ……………………4 1.3一般实矩阵求逆……… 1.4一般复矩阵求逆……… 13 1.5对称正定矩阵的求逆… 18 1.6托伯利兹矩阵求逆的特兰持方法…… 21 1.7求一般行列式的值…………………………………………25 1.8求矩阵的秩 9 1.9对称正定矩阵的乔里斯基分解与行列式求值…… 33 1.10矩阵的三角分解 36 1.11一般实矩阵的QR分解 41 1.12一般实矩阵的奇异值分解… 46 1.13求广义逆的奇异值分解法……………………………… 61 第2章矩阵特征值与特征向量的计算 2.1求对称三对角阵的全部特征值与特征向量………………………75 2.2求实对称矩阵全部特征值与特征向量的 豪斯荷尔德变换法 80 2.3求赫申伯格矩阵全部特征值的QR方法…………8 2.4求一般实矩阵的全部特征值 ………95 2.5求实对称矩阵特征值与特征向量的雅可比法…………………102 2.6求实对称矩阵特征值与特征向量的雅可比过关法………………109 第3章线性代数方程组的求解…………………………………………115 3.1求解实系数方程组的全选主元高斯消去法 …115 3.2求解实系数方程组的全选主元高斯-约当消去法 119 3.3求解复系数方程组的全选主元高斯消去法……………………124 3.4求解复系数方程组的全选主元高斯-约当消去法 129 3.5求解三对角线方程组的追赶法 135 3.6求解一般带型方程组……………………………………………139 Ⅳ棠用算法程序集(C++语言描述)(第四版) 3.7求解对称方程组的分解法 ·++++·:··· 146 3.8求解对称正定方程组的平方根法… 3.9求解托伯利兹方程组的列文逊方法 ……………………………155 3.10高斯赛德尔迭代法 …161 3.11求解对称正定方程组的共轭梯度法…………………………………165 3.12求解线性最小二乘问题的豪斯荷尔德变换法……………………………169 3.13求解线性最小二乘问题的广义逆法……… …………175 3.14求解病态方程组…… 189 第4章非线性方程与方程组的求解 …,,··, …195 4.1求非线性方程实根的对分法 ……………………………195 4.2求非线性方程一个实根的牛顿法… 198 4.3求非线性方程一个实根的埃特金迭代法… 201 4.4求非线性方程一个实根的试位法……204 4.5求非线性方程一个实根的连分式法 …………………………206 46求实系数代数方程全部根的QR方法 …211 4.7求实系数代数方程全部根的牛顿下山法……………………………………216 4.8求复系数代数方程全部根的牛顿下山法 ……225 4.9求非线性方程组一组实根的梯度法 233 4.10求非线性方程组一组实根的拟牛顿法…………………………238 4.11求非线性方程组最小二乘解的广义逆法 ,,··,,·.,,.,,,, 246 4.12求非线性方程一个实根的蒙特卡洛法… 262 4.13求实函数或复函数方程一个复根的蒙特卡洛法 265 4.14求非线性方程组一组实根的蒙特卡洛法…………269 第5章插值与逼近……… ……………………………274 5.1 Lagrange插值…… 274 5.2连分式插值… …………………………………277 5.3埃尔米特插值… ……………………………281 5.4埃特金逐步插值……… …284 5.5光滑插值…………………………………288 5.6第一种边界条件的三次样条函数插值、微商与积分……………………294 5.7第二种边界条件的三次样条函数插值、微商与积分 ……301 5.8第三种边界条件的三次样条函数插值、微商与积分…………………………307 5.9二元 Lagrange插值…………………………314 5.10最小二乘曲线拟合 ……………319 5.11切比雪夫曲线拟合 …………326 5.12最佳一致逼近的里米兹方法………………………………………………332 5.13矩形域的最小二乘曲面拟合… ………………………………337 第6章数值积分………… …348 6.1变步长梯形求积法 348 目录V 6.2变步长辛卜生求积法 351 6.3自适应梯形求积法……………………353 6.4龙贝格求积法…… 356 6.5计算一维积分的连分式法………… 359 6.6高振荡函数求积法……………………………………… 363 6.7勒让德-高斯求积法… 368 6.8拉盖尔-高斯求积法…… 371 6.9埃尔米特高斯求积法…………………………………………………………374 6.10切比雪夫求积法 376 6.11计算一维积分的蒙特卡洛法…… 379 6.12变步长辛卜生二重积分法…… ……………………………………382 6.13计算多重积分的高斯方法 ………………………………………386 6.14计算二重积分的连分式法… …391 6.15计算多重积分的蒙特卡洛法 ………………395 第7章常微分方程组的求解… 399 7.1定步长欧拉方法……………………………………………………………399 7.2变步长欧拉方法 404 7.3维梯方法……………… ………409 7.4定步长龙格-库塔方法…………………………………………………………414 7.5变步长龙格库塔方法 …419 7.6变步长基尔方法…………… …………………424 7.7变步长默森方法…………………………………………………………430 7.8连分式法 436 7.9双边法…… …………444 7.10阿当姆斯预报校正法……………………………………………………450 7.11哈明方法 …456 7.12特雷纳方法 …463 7.13积分刚性方程组的吉尔方法………………………………………………470 7,14二阶微分方程边值问题的数值解法………………………………………487 第8章数据处理… ,,要 …………494 8.1随机样本分析… …………………………494 8.2一元线性回归分析………………………………………………………………499 8.3多元线性回归分析 503 8.4逐步回归分析 510 8.5半对数数据相关 ………………………………………………521 8.6对数数据相关 ……………………………………………525 第9章极值问题的求解 529 9.1一维极值连分式法 529 9.2n维极值连分式法 ………………………………………532 Ⅵ常用算法桯序集(C++语言描迷)(第四版) 9.3不等式约束线性规划问題……………………………… …538 9.4求n维极值的单形调优法……………………………545 9.5求约東条件下n维极值的复形调优法…………………………………………552 第10章复数、多项式与特殊函数的计算……… …562 10.1复数运算… 562 10.2实系数多项式的计算……………………………………………………569 10.3复系数多项式的计算……………………………………………………………574 10.4特殊函数的计算… …581 第11章查找与排序…… 619 11.1顺序表的查找与排序…………………………………………………………619 11.2结构表的查找与排序 …………………………………………629 11.3磁盘文件结构表的查找与排序… 636 11.4磁盘随机文本文件的字符串匹配… ………………642 参考文献…………… 646 第1章矩阵运算 1.1实矩阵相乘 【功能】 求m×n阶矩阵A与n×k阶矩阵B的乘积矩阵C=AB。 【方法说明】 乘积矩阵C中的各元素为 C b,i=0,1 n 1,…,k-1 【数据成员与函数成员】 类名 trmul 数据成员 说明 double a[[n] 存放矩阵A的元素 double b[nk] 存放矩阵B的元素 Int m 矩阵A与乘积矩阵C的行数 Int n 矩阵A的列数,矩阵B的行数 nt 矩阵B与乘积矩阵C的列数 double c[miLk] 存放乘积矩阵C=AB的元素 主要函数成员 说明 void input() 从文件读入矩阵A与B void mulo 执行C=AB void output) 将乘积矩阵C写到文件并显示 【程序】(文件名为1 TRMUL.CPP) //1TRMUL CPP /实矩阵相乘 # include <iostream> include fstream> using namespace stdi class trmul private: int m, n, k doub1ea,b,“C; ublic:

...展开详情
img
Nicolas0311
  • 领英

    绑定领英第三方账户获取
  • GitHub

    绑定GitHub第三方账户获取
  • 脉脉勋章

    绑定脉脉第三方账户获得
  • 技术圈认证

    用户完成年度认证,即可获得

关注 私信 TA的资源

上传资源赚积分,得勋章
最新资源