您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > C/C++资料 > 西安交通大学计算方法(C)讲义
1计算方法(C)目录第1章绪论1.1数值计算1.2数值方法的分析1.2.1计算机上数的运算1.2.2算法分析第2章线性代数方程组2.1Gauss消去法2.1.1消去法2.1.2主元消去法2.2矩阵分解2.2.1Gauss消去法的矩阵意义2.2.2矩阵的LU分解及其应用2.2.3其他类型矩阵的分解2.2.4解三对角矩阵的追赶法2.3线性方程组解的可靠性2.3.1向量和矩阵范数2.3.2残向量与误差的代数表征2.4解线性方程组解的迭代法2.4.1基本迭代法2.4.2迭代法的矩阵表示2.4.3收敛性第3章数据近似3.1多项式插值3.1.1插值多项式3.1.2Lagrange插值多项式3.1.3Newton插值多项式3.1.4带导数条件的插值多项式3.1.5插值公式的余项3.2最小二乘近似3.2.1最小二乘问题的法方程3.2.2正交化算法第4章数值微积分24.1内插求积,Newton-Cotes公式4.1.1Newton-Cotes公式4.1.2复化求积公式4.1.3步长的选取4.1.4Romberg方法4.1.5待定系数法4.2数值微分4.2.1插值公式方法4.2.2Taylor公式方法(待定系数法)4.2.3外推法第5章非线性方程求解5.1解一元方程的迭代法5.1.1简单迭代法5.1.2Newton法5.1.3割线法5.1.4区间方法5.2收敛性问题5.2.1简单迭代——不动点5.2.2收敛性的改善5.2.3Newton法的收敛性5.2.4收敛速度3第1章绪论1.1数值计算现代科学的发展,已导致科学与技术的研究从定性前进到定量,尤其是现代数字计算机的出现及迅速发展,为复杂数学问题的定量研究与解决,提供了强有力的基础。通常我们面对的理论与技术问题,绝大多数都可以从其物理模型中抽象出数学模型,因此,求解这些数学模型已成为我们面临的重要任务。一、本课程的任务:寻求解决各种数学问题的数值方法——如何将高等数学的问题回归到初等数学(算术)的方法求解——了解计算的基础方法,基本结构(否则只须知道数值软件)——并研究其性质。立足点:面向数学——解决数学问题面向计算机——利用计算机作为工具充分发挥计算机的功能,设计算法,解决数学问题例如:迭代法、并行算法二、问题的类型1、离散问题:例如,求解线性方程组bAx——从离散数据:矩阵A和向量b,求解离散数据x;2、连续问题的离散化处理:例如,数值积分、数值微分、微分方程数值解;3、离散问题的连续化处理:例如,数据近似,统计分析计算;1.2数值方法的分析在本章中我们不具体讨论算法,首先讨论算法分析的基础——误差。一般来讲,误差主要有两类、三种(对科学计算):1)公式误差——“截断误差”,数学计算,算法形成——主观(人为):数学问题-数值方法的转换,用离散公式近似连续的数学函数进行计算时,一般都会发生误差,通常称之为“截断误差”;——以后讨论2)舍入误差及输出入误差——计算机,算法执行——客观(机器):由于计算机的存储器、运算器的字长有限,在运算和存储中必然会发生最末若干位数字的舍入,形成舍入误差;在人机数据交换过程中,十进制数和二进制数的转换也会导致误差发生,这就是输入误差。这两种误差主要是由于计算机的字长有限,采用浮点数系所致。首先介绍浮点数系41.2.1计算机上的运算——浮点运算面向计算机设计的算法,则先要讨论在计算机上数的表示。科学记数法——浮点数:约定尾数中小数点之前的数全为零,小数点后第一个数不能为零。目前,一般计算机都采用浮点数系,一个存储单元分成首数和尾数:××┅┅┅┅×××┅┅┅┅┅┅┅┅××首数l尾数(t位)其中首数存放数的指数(或“阶”)部分,尾数存放有效数字。对于进制,尾数字长为t位的浮点数系),,,(ULtF中的(浮点)数,可以用以下形式表示:tjjddlttdddxfl,,3,2,011)221()(此处,指数l(称为阶)限制在UlL范围内。以下记实数系中的实数为Rx,它在浮点数系),,,(ULtF中对应的浮点数记为),,,()(ULtFxfl——进制,t尾数位数,UL,阶的范围。几乎所有近代计算机都采用“二进制”(即2):位、字节和字分别是指位数不同的二进制数。例如十进制转换二进制10210000000121220000001042240000010083280000100090322900001001101322100000101027013422221281627字节100011011位是一个二进制数(即0或1);字节是8个二进制数字;上表的最后一列是字节。单精度浮点数(singleprecision)按32位存储,双精度浮点数(doubleprecision)按64位存储。精度用于指明每个浮点数保留多少位以及尾数和阶数各分配多少位。单精度浮点数的尾数为23位、阶数为8位;双精度浮点数的尾数为53位(包含符号位)、阶数为11位(包含符号位)。双精度浮点数的等价二进制数如下所示:5位位尾数符号位位指数(含符号位)645211ddddddddfbbbbbb浮点数的特点:1、实数转换到浮点数——浮点化,〈缺点:〉总会产生误差(除极个别的情况:,2,1,0,2lxl)按四舍五入,绝对误差:tlxflx21)((举例),〈优点:〉浮点化产生的相对误差有界(与数字本身的数量级无关)txxflxx121)()(注:设实数Rx,则按进制可表达为:1,,,3,2,011)11221(ttjjddlttdttdddx按四舍五入的原则,当它进入浮点数系),,,(ULtF时,若211td,则lttdddxfl)221()(若211td,则lttdddxfl)1221()(对第一种情况:tlltlttdxflx21)21(1)()(11对第二种情况:tlltlttdxflx21)21(1)(11就是说总有:tlxflx21)(另一方面,由浮点数要求的11d,有lx1,将此两者相除,便得txxflx121)(2、每一个浮点数系的数字有限:1)1()1(21LUt3、浮点数系中的运算非自封闭,(因为数字有限、尾数字长有限、指数数字有限等)例:在)5,5,4,10(F中,32102001.,105420.yx,运算yx和yx/,6的结果显然已不在此浮点数系内,而yx或yx也不在此浮点数系内,需)(yxfl结果才在此浮点数系内。浮点运算应注意:1)避免产生大结果的运算,尤其是避免小数作为除数参加运算;2)避免“大”“小”数相加减;3)避免相近数相减,防止大量有效数字损失;4)尽可能简化运算步骤,减少运算次数。原因:记txxflxx121)(max)(max,由xxflx)(,可得:yxyxflyx)()((“。”表示任意一种四则运算)此处是由机器字长(实质上是尾数字长t的大小)确定的常数(它反映了实际运算的精度)。显然,若要求运算的舍入误差小,应使运算结果(如:yxyxyx,,)较小。尤其是小分母运算:yyxyx,小y大误差。其次,当浮点数系中两个数量级相差较大的数相加(或减),注意到由于浮点数系中数字字长的有限性,可能导致“大数吃小数”。例如,)5,5,4,10(F中13102317.,108231.yx,则xyx3313100000.108231.102317.108231.似乎)(xyy没有参加运算。第三,同样,由于浮点数系中数字字长的有限性,当两个相近数相减时:例如,在)5,5,8,10(F中,331082317832.,1082317844.yx,两数相减:31012000000.yx,计算结果仅剩2位有效数字,而原来参加运算的数字有8位有效数字,这将严重影响最终计算结果的精度。1.2.2算法分析作为一个可用的算法,必须考虑其效率和可靠性,定义:计算机完成一个乘法和一个加法,称为一个浮点运算(记为flop);注:由于计算机在运算时,加(减)法所耗时间远少于乘(除)法,所以通常只须计算乘法的次数,因此也有“一个算法需要多少个‘乘法’”这一提法。1、计算效率——可计算性(计算复杂性——空间、时间)7例:解线性方程组bAx的Grammar方法:AAiix,其中A是方程组系数矩阵A对应的行列式,而iA则是以右端向量b替代A的第i列所得矩阵对应的行列式。由线性代数知识可知,若)(ijA,则nnniiiiiiJ212121),()1(A,其中),,,(21niiiJ是由{n,,2,1}变换到{niii,,21}所需的置换次数。可见每计算一个行列式,需要!)1(nn个浮点运算;因此,按Grammar方法解方程组约需!)1(2nnN个浮点运算。当20n时201070728.9N,用一个运算速度为秒/108的计算机进行求解,约需510078.3年(日前报道我国计算机已达到/1038408秒,这仍需近10年)。而n=20的方程组应该说是一个小型的方程组。因此Grammar方法是一个不能接受的算法,它缺乏可计算性。第二章将介绍的Gauss消去法和迭代法就有较高的效率,具有很好的可计算性。2、计算可靠性作为算法,除了考虑其效率外,必须重视可靠性,它包括两方面:问题的性态和方法的稳定性问题的性态所计算的问题当原始数据发生小扰动时,问题的解一般也发生扰动。问题的性态——问题的解对原始数据发生变化的敏感性。原始数据小扰动问题解—问题是病态的—大变化—问题是良态的—小扰动例:线性方程组:604751413112134131216113121321321321xxxxxxxxx的解是:111X若将方程组的系数改写成具有2位有效数字的小数:78.020.025.033.01.125.033.050.08.133.050.000.132132121xxxxxxxxx的解则变成:65.3325.3822.6~X;这是一个典型的病态方程组。一般:由原始数据x计算结果)(xf,扰动后的数据x~计算结果)~(xf,8若对问题f存在常数m,满足关系式:xxxmxfxfxf~)()~()(或xxxm~f(x))x~f(-f(x)sup则称(相对误差之比的上界)m为该问题的条件数,记作)(fcondm;由微积分中值定理知识容易计算出,当xx~时,)()()(xfxfxfcond。稍后我们在第二章将对线性方程组的性态作进一步的分析。算法的数值稳定性:例:计算8,,1,0,101ndxexeIxnn;解:由微积分知识,可得计算公式,①11nnnII,②)1(11nnInI,我们将准确值与计算结果列表如下:方法0I1I2I3I4I5I6I7I8I准确值.6321.3679.2642.2073.1709.1455.1268.1124.1010①.6321.3679.2642.2074.1704.1480.1120.2160-.7280②.6320.3680.2643.2073.1709.1455.1268.1124.1010由上表可见,方法①中,原始步的误差,随着计算步数的增加被严重地放大,特别是8I竟变成负数(注意:被积函数是非负函数),而方法②则相反;这是因为方法①中,若前步有误差:11~kkII,则kIkkIIkIkkkk111~1~,说明1kI
本文标题:西安交通大学计算方法(C)讲义
链接地址:https://www.777doc.com/doc-7028524 .html