1、,结束,实际问题,模型设计,算法设计,问题的解,上机计算,程序设计,绪 论,数值分析是计算数学的一个主要部分,解决科学研究或工程技术问题,一般按如下途径进行:,1,点击看实例,点击看模型推出,点击看算法推出,点击看 课程结构体系,点击看试验,Introduction,其中算法设计是数值分析课程的主要内容.,数值分析课程研究常见的基本数学问题的数值解法.包含了数值代数(线性方程组的解法、非线性方程的解法、矩阵求逆、矩阵特征值计算等)、数值逼近、数值微分与数值积分、常微分方程及偏微分方程的数值解法等.,结束,2,它的基本理论和研究方法都建立在数学理论基础之上,研究对象是数学问题,因此它是数学的分支
2、之一.,但它又与计算机科学有密切的关系.我们在考虑算法时,往往要同时考虑计算机的特性,如计算速度、存贮量、字长等技术指标,考虑程序设计时的可行性和复杂性.如果我们具备了一定的计算机基础知识和程序设计方法,学习数值分析的理论和方法就会更深刻、更实际,选择或设计的算法也会更合理、更实用.,在科学研究、工程实践和经济管理等工作中,存在大量的科学计算、数据处理等问题.应用计算机解决数值计算问题是理工科大学生应当具备的基本能力.,cunzhuliang,数值分析是研究用计算机求解各种数学问题的数值方法及其理论的一门学科。数值分析也称为数值计算方法。,研究对象由数学模型提出求解的数值计算方法并编程计算出结
3、果,然后进行误差分析。,数值逼近,内容,数值代数,偏微分方程数值解法,常微分方程和动力系统的数值解法,最优化理论与方法,误差理论,1 数值分析的研究对象、内容和特点,第一章 误差分析,方法:,构造性,递推性,离散化,近似替代,计算离散点上的近似值,方法的构造,解的存在唯一性的证明,复杂计算过程转化成简单的计算过程的多次重复(适合计算机计算),在误差允许的范围内,无限次的计算用有限次计算替代,b,1,例2 用Cramer法则求解n元线性方程组。显然理论上可行,且有精确表达式。实际计算时会出现什么问题呢?,构造性-,n元线性方程组的矩阵形式常记为 Ax=b (1.1)此时A是一个nn 方阵,x 和
4、 b是n维列向量.根据线性代数知识若A 0,(1.1)的解存在且唯一.,定理1 (克莱姆法则) 线性方程组(1.1)当其系数行列式 时,有且仅有唯一解,此处 是将系数行列式中第j列的元素对应地换为方程组的常数项 后得到的n 阶行列式.,克莱姆法则的意义主要在于它给出了解与系数的明显关系,这一点在以后许多问题的讨论中是重要的.但是用克莱姆法则进行计算是不方便的,因为按这一法则解一个n个未知量n个方程的线性方程组就要计算(n+1)个n级行列式,这个计算量是很大的.该算法共需要(n+1)!以上的乘法。,而用后面将要介绍的高斯消元求解乘、除法的运算次数不超过,5,3,byyy,yyy,byyyyy,4
5、,特点:,1、方法是近似的; 2、与计算机不能分离:上机实习(掌握一门语言:C语言或Fortran语言,会用一种数学软件:Matlab,Mathematica , Maple),在我们今后的讨论中,误差将不可回避, 上机实习是需要大家创造条件完成的,2 数值与浮点运算,2.1数制,虽然计算机能极快地进行运算,但其内部并不像人类在 实际生活中使用的十进制,而是使用只包含0和1两个数 值的二进制。 当然,人们输入计算机的十进制被转换成二进制进行计 算,计算后的结果又由二进制转换成十进制,这都由 操作系统自动完成,并不需要人们手工去做,学习汇编 语言,就必须了解二进制(还有八进制/十六进制)。 数制
6、也称计数制,是用一组固定的符号和统一的规则 来表示数值的方法。人们通常采用的数制有十进制、 二进制、八进制和十六进制。,用一组固定的数字(数码符号)和一套统一的规则 来表示数值的方法就叫做数制(number system,也 称作计数制)。这一定义的主要内涵有以下几个方面。,2.2定义,数制的种类很多,除了十进制数,还有二十四进制 (24小时一天)、六十进制(60分一小时,圆周360度) 、十六进制、八进制、六进制、二进制等。,在一种数制中,只能使用一组固定的数字来表示 数的大小。数字在一个数中所处的位置称为数位。 具体使用多少个数字来表示一个数值的大小,就称 为该数制的基数(base)。例如
7、,十进制数(Decimal) 的基数是10,使用0-9十个数字;二进制数(Binary) 的基数为2,使用0,1两个数字。,2.3浮点数,计算机中常用的数据表示格式有两种,一是定点格式, 二是浮点格式。一般来说,定点格式容许的数值范围 有限,但要求的处理硬件比较简单。而浮点格式容许 的数值范围很大,但要求的处理硬件比较复杂。,浮点数是属于有理数中某特定子集的数的数字表示, 在计算机中用以近似表示任意某个实数。具体的说, 这个实数由一个整数或定点数(即尾数)乘以某个 基数(计算机中通常是2)的整数次幂得到,这种表 示方法类似于基数为10的科学记数法。,数的浮点表示,一台微机价格:¥4999.00
8、,浮点数表示: 0.4999104 地球半径: 6378137m, (6.378137e+006)浮点数表示: 0.6378137107 光速: 2.99792458e+008浮点数表示: 0.299792458109,尾数部,阶码部,0,1,2,9, 0,Lm U,其中,m是整数,成为指数。,3.1 误差的来源在运用数学方法解决实际问题的过程中,每一步都可能带来误差.,1、模型误差 在建立数学模型时,往往要忽视很多次要因素,把模型“简单化”,“理想化”,这时模型就与真实背景有了差距,即带入了误差.,2、测量误差 数学模型中的已知参数,多数是通过测量得到.而测量过程受工具、方法、观察者的主观因
9、素、不可预料的随机干扰等影响必然带入误差.,结束,3 误差来源与分类,14,hushi,3、截断误差 数学模型常难于直接求解,往往要近似替代,简化为易于求解的问题,这种简化带入误差称为方法误差或截断误差.,4、舍入误差 计算机只能处理有限数位的小数运算,初始参数或中间结果都必须进行四舍五入运算,这必然产生舍入误差.,结束,在数值分析课程中不分析讨论模型误差;截断误差是数值分析课程的主要讨论对象,它往往是计算中误差的主要部分,在讲到各种算法时,通过数学方法可推导出截断误差限的公式;,15,舍入误差的产生往往带有很大的随机性,讨论比较困难,在问题本身呈病态或算法稳定性不好时,它可能成为计算中误差的
10、主要部分;至于测量误差,我们把它作为初始的舍入误差看待.,误差分析是一门比较艰深的专门学科.在数值分析中主要讨论截断误差及舍入误差.但一个训练有素的计算工作者,当发现计算结果与实际不符时,应当能诊断出误差的来源,并采取相应的措施加以改进,直至建议对模型进行修改.,结束,16,cheng,3.2 误差的基本概念1、误差与误差限定义1.1 设x是精确值,x*是它的一个近似值,称e*=x*-x为近似值 x*的绝对误差,简称误差.,误差是有量纲的量,量纲同x,它可正可负.误差一般无法准确计算,只能根据测量或计算情况估计出它的绝对值的一个上限,这个上界称为近似值 x的误差限,记为,x* -x ,其意义是
11、:x* - xx* + 在工程中常记为:x= x* .,结束,17,2、相对误差与相对误差限 误差不能完全刻画近似值的精度.如测量百米跑道产生10cm的误差与测量一个课桌长度产生1cm的误差,我们不能简单地认为后者更精确,还应考虑被测值的大小.下面给出定义:,结束,定义1.2 误差与精确值的比值,18,称为近似值 x 的相对误差,记作,相对误差是无量纲的量,常用百分比表示,它也可正可负.相对误差也常不能准确计算,而是用相对误差限来估计.,相对误差限:,实际上由于x* 不知道,用上式无法确定r ,常用 x代 x*作 分母,此时:,结束,19,结束,20,作为 的相对误差,,条件是 较小,,此时利
12、用,知,是 的平方项级,,故可忽略不计.,记作 ,,即,可见此时产生的影响是 量级,当r 较小时,可以忽略不计,以后我们就用 表示相对误差限.,绝对误差:e = x* - x , x* 是准确数 x是近似数 绝对误差限:|e| = |x* - x| 常表示为 x= x* 或x* - x x* + 相对误差:er =(x*-x)/x* , x* 是准确数, x是近似数 相对误差限r:|er/ x*|= |x* - x|/|x*| r 相对误差比绝对误差更能反映准确数与近似数的差异 例:考虑 1.x* =10, x=11 e=-1 er=-0.12.x* =1000, x=1001 e=-1 er
13、=-0.001,2、误差定义总结,3.3 有效数字,将 的近似值 写成(十进制)浮点数,其中 为 0, 1, , 9 中的一个数字。,若误差满足,误差不超过p-l位的半个单位,则称近似值 有 位有效数字。,相对误差限与有效数字有下述关系,定理3.1 设近似值,1)若 具有 位有效数字,,则其相对误差限为,则 至少具有 位有效数字.,2)若 的相对误差限为,证明:,1)若 具有 位有效数字,,而,因此,2)由于,由题设有,因此 有 位有效数字.,定义 如果近似值 x 的误差限是它某一数位的半个单位,我们就说 x 准确到该位,从这一位起直到前面第一个非零数字为止的所有数字称 x 的有效数字.,结束
14、,21,如:=3.14159265 则3.14和3.1416分别有3位和5位有效数字.而3.143相对于也只能有3位有效数字,按四舍五入原则写出下列各数具有5位有效数字的,例1,近似数:,187.9325, 0.03785551, 8.000033, 2.7182818.,按定义,,187.93, 0.037856, 8.0000, 2.7183.,上述各数具有5位有效数字的近似数分别是,注意:,的5位有效数字近似数是8.0000,而不是8,,因为8只有1位有效数字.,例3 计算sin 1.2,问要取几位有效数字才能保证相对误差限不大于0.01%.,解关于n的不等式 10-n1810-5=1.
15、810-4.所以取n=4,即可满足要求.对有效数字的观察比估计相对误差容易得多,故监视有效数字是否损失,常可发现相对误差的突然扩大.,结束,解 sin1.2=0.93,故a1=9,m=0,25,例4 计算 ,视已知数为精确值,用4位浮点数计算.,解 原式=0.131810-2-0.131610-2=0.210-5 .结果只剩一位有效数字,有效数字大量损失,造成相对误差的扩大.若通分后再计算:,原式=就得到4位有效数字的结果.,结束,26,计算机只能处理有限数位的小数运算,初始参数或中间结果都必须进行四舍五入运算,这必然产生舍入误差.,舍入误差,一个数 与它经过“舍入”或“切断”产生的近似数 之
16、间 的误差称为舍入误差.,由“舍入”产生的计算机上的十进制浮点数,的舍入误差,记实数,的浮点数表示为,若,,则,取为零;,根据有效数字的定义可知,有 有效数字.,例1:“四舍五入”的绝对误差限设x* = 0.a1a2 anan+110m, 十进制标准表示式(a1 0)。四舍五入:此时,总有,4 函数的误差估计 /*Error Estimation for Functions*/,问题:对于 y = f (x),若用 x* 取代 x,将对y 产生什么影响?,分析:e (y) = f (x*) f (x) e (x) = x* x,Mean Value Theorem,= f ( )(x* x),
17、x* 与 x 非常接近时,可认为 f ( ) f (x*) ,则有: |e (y)| | f (x*)|e(x)|,即:x*产生的误差经过 f 作用后被放大/缩小了| f (x*)|倍。故称| f (x*)|为放大因子 /* amplification factor */ 或 绝对条件数 /* absolute condition number */.,相对误差条件数/* relative condition number*/,f 的条件数在某一点是小大,则称 f 在该点是好条件的 /* well-conditioned */ 坏条件的 /* ill-conditioned */。,Mean
18、Value Theorem,例1 : 计算 y = ln x。若 x 20,则取 x 的几位有效数字可保证 y 的相对误差 0.1% ?,解:设截取 n 位有效数字后得 x* x,则,估计 x 和 y 的相对误差上限满足近似关系, n 4,例2:计算 ,取 4 位有效,即 , 则相对误差,数值运算时误差的传播当参与运算的数值带有误差时,结果也必然带有误差,问题是结果的误差与原始误差相比是否扩大.,设计算法时应注意的原则,1)对函数 f(x)的计算:设 x 是x *的近似值,则结果误差,用泰勒展式分析,结束,27,忽略第二项高阶无穷小之后,可得函数f(x)的误差限估计式,结束,28,2)对多元函
19、数 f(x1*,x2*,xn*)=A*, 设 x1,x2,xn 是x1*,x2*,xn* 的近似值,则A=f(x1,x2,xn) 是结果的近似值。,其中,结束,略去高阶项后,29,3)四则运算中误差的传播 按(1.10)易得:,其中(1.11)取等号,是因为作为多元函数,加减法的一次函数, 泰勒展开没有二次余项。,结束,30,一个算法如果输入数据有误差,而在计算过 程中舍入误差不增长,则称此算法是数值稳定的,否则称 此算法为不稳定的.,定义,5算法的数值稳定性,用一个算法进行计算,如果初始数据误差在计算中传播 使计算结果的误差增长很快,这个算法就是数值不稳定的.,例7:若电压V=220 5V,
20、电阻R=300 10 ,求电流I并计算其误差限及相对误差限。 解:,所以,结束,31,结束,1.3.2 算法中应避免的问题 1)避免相近数相减 由公式(1.11),32,当 x1 和 x2 十分相近时, x1-x2接近零,,将很大,所以,和,从直观上看,相近数相减会造成有效数位的减少, 本章例6就是一个例子.有时,通过改变算法可以避 免相近数相减.,大很多,即相对误差将显著扩大.,将比,结束,33,结束,例8: 解方程 x 2-18 x +1=0,假定用4位浮点计算. 解: 用公式解法,可见第二个根只有两位有效数字,精度较差.若第二个根 改为用韦达定理计算,可得较好结果。,34,如,等等,都可
21、以得到比直接计算好的结果。,可改为,如,可改为,结束,35,结束,若,则,这时,将比,扩大很多。,3)防止小数被大数“吃掉” 在大量数据的累加运算中,由 于加法必须进行对位,有可能出现小数被大数“吃掉”.,2)避免除法中除数的数量级远小于被除数 由公式(1.13),36,结束,如用六位浮点数计算某市的工业总产值,原始数据是各企业 的工业产值,当加法进行到一定程度,部分和超过100亿元 (0.11011),再加产值不足10万元的小企业产值,将再也加 不进去.而这部分企业可能为数不少,合计产值相当大.这种情 况应将小数先分别加成大数,然后相加,结果才比较正确. 这个例子告诉我们,在计算机数系中,加
22、法的交换律和结合律 可能不成立,这是在大规模数据处理时应注意的问题.,4)注意运算步骤的简化 减少算术运算的次数以减少误差的积 累效应:时参加运算的数字精度应尽量保持一致,否则那些较 高精度的量的精度没有太大意义。,37,毕 业 设 计,计算机文 化基础,数值分析与实验,数学分析,高等代数,解析几何,常微分方程,数 值 分 析 理论,偏微分方程 数值解法,最优化,离散数学,算法语言 MATLAB,程序设计,差分方法,有限元,课程结构体系,有限体积法,矩阵计算,问导弹在何时何处,实际问题,某军的一导弹基地发现正北方向,120 km处海面上有敌艇一艘以90 km/h,的速度向正东方向行驶. 该基地
23、立即发,射导弹跟踪追击敌艇, 导弹速度为,450 km/h,自动导航系统使导弹在任,一时刻都能对准敌艇.试,击中敌艇?,(ditingyisou),xingshi,genzongzhuiji,genzongzhuijiditeng xingshi,120,P(x, y),当t =0时,导弹位于原点O,敌艇位于(0,H)点, H= 120 (km).,当时刻t ,导弹位于P(x(t),y(t),敌艇位于(90t,H)点,O,(0, H),(90t,H),Vw =450 (km/h) Ve =90 (km/h),数学模型,速度可由水平分速度与垂直分速度合成,导弹方向指向敌艇,故有,导出一阶微分方程
24、组,解析方法,有较强技巧性: 消去 t ,化为二阶方程,连同初始条件,设,降阶得到一阶可分离变量方程,导弹击中艇时y=H, 得到此时其位置和时刻,Euler方法十分简单, 就是用差商代替,Euler方法(数值方法),的值到第k+1步的值之间的关系式,微商,即,通常取t为常数,就得到由第k步,t = tk+1时导弹位置为(xk+1 ,yk+1),计算到yk H, yk+1H 停止,取Lxk,Euler 迭代格式,第一实验,关于欧拉方法的上机,方程,初始条件,结束,1,1、实验目的,掌握求常微分方程初值问题近似值的欧拉方法;, 培养编程与上机调试能力.,提高学生比较近似值及误差分析能力,结束,2,
25、2、实验要求,(1) 选择一种计算机语言设计出欧拉方法求常微分方程初值问题近似值的程序,并且选择不同的初值,观察所需的迭代次数和迭代结果.,(2) 利用Matlab现有命令求常微分方程初值问题的近似值。,结束,3,3、算法描述,原问题,递推格式,泰 勒 展 开,结束,4,欧拉方法,递推格式,h为步长,结束,5,亦称为欧拉折线法 /* Eulers polygonal arc method*/,称为欧拉法 /* Eulers method*/,结束,6,4、程序,function E=eulerbijiao(f,a,b,ya,m,g) f=inline(f); g=inline(g); h=(b
26、-a)/m; t=zeros(1,m+1); y=zeros(1,m+1); t=a:h:b; y(1)=ya; z(1)=feval(g,a);for j=1:my(j+1)=y(j)+h*feval(f,t(j),y(j);z(j+1)=feval(g,t(j+1);end E=t y z z-y;,结束,7,例题1、,求解初值问题,解:利用我们编制好的数值分析GUI教学软件的第九章部分,得到以下的结果。,结束,8,结束,9,该问题的数学模型为,5、例题,解:用Euler方法和 h=1(一年)、h=1/12(一个月)、h =1/360(一天),计算初值问题在0,5上的近似解 y(5), 精
27、确解为,例题2、设存入1000美元,且在5年连续地得到10% 的利息,求在5年后值为多少?,结束,10,因此,,利用精确解求5年以后的值得 y(5)=1000*exp(0.5)=1648.72,据Euler方法,其中,结束,11,eulerx(0.1*y,5*12,0,5,1000) i y 1 1000.000000 2 1008.333333 3 1016.736111 4 1025.208912 5 1033.752320 6 1042.366922 7 1051.053313 8 1059.812091 9 1068.643858 10 1077.549224,11 1086.5288
28、01 12 1095.583207 13 1104.713067 14 1113.919010 15 1123.201668 16 1132.561682 17 1141.999696 18 1151.516360 19 1161.112330 20 1170.788266,21 1180.544835 22 1190.382708 23 1200.302564 24 1210.305086 25 1220.390961 26 1230.560886 27 1240.815560 28 1251.155690 29 1261.581987 30 1272.095170,i y,i y,59 1618.226123 60 1631.711340 61 1645.308935,y(5)= 1645.308935,结束,13,结束,14,