计算方法主讲:孙在Email:sunzai@cjlu.edu.cn20102孙在,重庆人。1991-1998南京航空航天大学(本硕)1998-2001烟台东方电子有限公司2002-2006上海交通大学(博士)2007-今中国计量学院简介3办公室:仰仪北楼606电话:86875662Email:sunzai@cjlu.edu.cn4参考书目《计算方法与实习》第四版,袁慰平,东南大学出版社,2005《计算方法》,李桂成,电子工业出版社,2005《数值计算方法》,吕同富,清华大学出版社,20085计算机解决科学计算问题步骤6计算方法领域的科学家阿基米德(公元前287年—公元前212年)古希腊哲学家、数学家、物理学家。阿基米德成为兼数学家与力学家的伟大学者,并且享有“数学之神”和“力学之父”的美称。阿基米德流传于世的数学著作有10余种,多为希腊文手稿。7牛顿(1664-1727)牛顿的主要贡献有发明了微积分,发现了万有引力定律和经典力学等等,被誉为人类历史上最伟大,最有影响力的科学家。牛顿在数值计算方法领域也作出了很大的贡献,比如牛顿迭代法求解非线性方程、牛顿积分方法等。8欧拉(1707-1783)高斯(1777-1855)9计算机时代冯.诺依曼(1903-1957)10第1章计算方法引论§1–1计算方法的概念、研究对象与特点§4–2应用示例§4–3误差与有效数字§4–4误差危害与数值稳定性11学习要点计算方法研究的对象与特点;误差理论:误差的来源、度量与传播;数值计算的若干原则。121计算方法的概念、研究对象与特点计算方法:是研究数学问题的数值解及其理论的一个数学分支;研究对象:适合于在计算机上使用的数值求解方法及相关理论;方法的收敛性、稳定性及误差分析;方法的优化;研究特点:数学的抽象性与严格性;应用广泛性、与计算机的严密结合性。132应用示例例1求解x在[2,4]区间的值2()230fxxx方程有解析解:x=3,-1也可以令经过反复迭代从结果可以看到:循环迭代越长,计算结果越接近于精确解,换句话说:误差越来越小10102132435423,0,1,2,423=11=3.31723=9.634=3.10423=9.208=3.03423=9.068=3.01123=9.022=3.004kkxxkxxxxxxxxxxx……取得…………………………23xx142(0)1dyxydxyy例2求解初值问题该方程的解析解为21yx其数值解方法很多,比如欧拉方法、经典的四阶R-K方法等151123411223431(22)6(,)(,)22(,)22(,))nnnnnnnnnnyykkkkkhftyhkkhftyhkkhftykhfthyk其中2(,)xfxyyyh为步长16现取h=0.05,其结果见下表:xnynyxnyny01.000001.000001.21.849311.849310.21.183221.183221.41.943961.943960.41.341641.341641.62.049392.049390.61.483241.483241.82.144762.144760.81.612451.612452.02.236072.236071.01.732051.73205………17对不可压流动,三维湍流瞬时控制方程(N-S)为:湍流的基本方程div01div()+div(grad)1div()+div(gradv)1div()+div(gradw)upuutxvpvtywpwtzuuuu183误差与有效数字误差的来源模型误差:数学模型与实际问题之间的误差观测误差:观测得到的物理量与真实值之间的差异截断误差:计算过程中,有限过程代替无限过程的误差舍入误差:计算中四舍五入带来的误差前两种误差是客观存在的,后两种是由计算方法引起的,也是本课程研究的重点19绝对误差:设x*为准确值,x是x*的一个近似值,称e=x*-x为近似值x的绝对误差,简称误差绝对误差与绝对误差限绝对误差限:|e|=|x*-x|≤ε,简称ε为误差限,也可以表示为:x*=x±ε问题:绝对误差是否容易得到?为什么?20绝对误差的局限:多种情况下不能反映近似值的好坏,可比性不足相对误差:设x*为准确值,x是x*的一个近似值,称er=(x*-x)/x*为近似值x的相对误差,由于真值x*难以获得,通常用代替相对误差限:若有εr满足|er|≤εr,称εr为x的相对误差限(*)/rexxx21有效数字引入有效数字的目的是为了更明确地表达数的准确度,比如:x*==1.732050808……按照四舍五入的方法,取三位,x1=1.73,ε10.005;取五位,x2=1.7321,ε10.00005;它们的误差都不超过末位的半个单位322有效数字定义1:如果近似值x的误差限是某一位上的半个单位,且该位直到x的第一位非零数字一共有n位,则称近似值x有n位有效数字X=xxxxxxxx自左向右看,第一个非零数误差不超过该位的半个单位n位23有效数字定义2:设x*是x的一个近似值,写成规格化形式12*0.10mnxaaaLL其中ai(i=1,2~n)为0~9之间的整数,且a1≠0,m为整数。如果1|*|102mnxx则称x*为x的具有n位有效数字的近似值。24例3对下列数写出4位有效数字的近似值268.712-0.0021302623.0002130623.00012×105268.7-0.0021303.0003.000×105例4指出下列各数有几位有效数字13.5034-300000.9×10865125机器数系456.789-6.4730.005670.3210.456789×103-0.6473×1010.567×10-20.321×100尾数部定位部数的浮点表示26一个基数为β的t位数字的浮点表示形式为x=(±0.a1a2a3……at)βpβ≥2是整数,通常为2,8,10,16;ai都是整数,且0≤ai≤β-1t是计算机的字长p称为指数,也称计算机的阶码,它带有符号,有固定的下限L和上限U27x=(±0.a1a2a3……at)βp尾数部s=±0.a1a2a3……at=±那么x=s×βp若规定a1≠0,则β-1≤|s|<1,称x为规格化浮点数122()ttaaaL28机器数系定义:把计算机中浮点数所组成的集合加上“机器零”记为F,它也被称为机器数系特征描述:设F可以用4个参数描述:基数β,字长t,阶码范围[L,U],那么F的集合称为机器数系F含有1+2(β-1)βt-1(U-L+1)个数溢出:若计算的中间结果超出了F中的最大数和最小数范围,则称溢出29当一个实数x进入计算机后,成为计算机里的数,称它为x的机器数,用fl(x)表示;由于计算机的表达范围有限,通常对实数只能近似表示,往往通过截断或舍入来取得接近实数的近似值30例6具有十进制、3位字长、-L=U=5的2台计算机,一台为截断机,一台为舍入机,其规格化浮点数为:实数截断机浮点数舍入机浮点数34560.345×1040.346×104-3.1419-0.314×101-0.314×1010.0084560.845×10-20.846×10-2321453溢出溢出31数据误差的影响对函数来说,自变量的误差必然引起函数值的误差,函数越复杂,这种数据误差的影响也随之复杂,通常用泰勒级数展开的方法来估计。200000001()()'()()''()()2!1()()()!nnnfxfxfxxxfxxxfxxxRxn……对二元函数000000002222000000220000002(,)(,)(,)(,)()()1(,)1(,)()()2!2!1(,)1(,)()()(,)!!nnnnnnfxyfxyfxyfxyxxyyxyfxyfxyxxyyxyfxyfxyxxyyRxynxny……32对函数y=f(x1,x2),设x1,x2是近似值,x1*,x2*是准确值,函数准确值为:y*=f(x1*,x2*),于是,函数y的绝对误差为:e(y)=y*-y=f(x1*,x2*)-f(x1,x2)将f(x1*,x2*)在(x1,x2)处作泰勒展开,并取一阶泰勒多项式,得e(y)的近似表达式为:**1212**121211221212121212()*(,)((,)(,)(,)()()(,)(,)()()eyyyfxxfxxfxxfxxxxxxxxfxxfxxexexxx33函数的相对误差121122121211122211221211221212()(,)()(,)()()(,)()(,)()(,)(,)()()rrrreyfxxexfxxexeyyxyxyfxxxexfxxxexxyxxyxfxxxfxxxexexxyxy34几个常用的计算函数和、差、积、商的公式e(x1+x2)≈e(x1)+e(x2)e(x1-x2)≈e(x1)-e(x2)e(x1·x2)≈x2e(x1)+x1e(x2)e(x1/x2)≈e(x1)/x2-x1e(x2)/x22er(x1+x2)≈er(x1)x1/(x1+x2)+er(x2)x2/(x1+x2)er(x1-x2)≈er(x1)x1/(x1-x2)-er(x2)x2/(x1-x2)er(x1·x2)≈er(x1)+er(x2)er(x1/x2)≈er(x1)-er(x2)35例5已测得某物体行程s*的近似值s=800m,所需时间t*的近似值t=35s。若已知|t*-t|≤0.5s,试求平均速度v的绝对误差限和相对误差限。解:公式v=s/t的误差估计式为:绝对误差e(v)=e(s/t)≈e(s)/t–se(t)/t2相对误差er(v)=er(s/t)≈er(s)–er(t)36|e(v)|≈|e(s)/t–se(t)/t2|≤|e(s)/t|+|se(t)/s2|≤0.5/35+800*0.05/352≈0.0469≤0.05|er(v)|≈|e(s)–er(t)|≤|er(s)|+|er(t)|≤0.5/800+0.05/35≈0.00205375误差危害的防止例7建立积分n=0,1,2,……20的递推关系式,并研究它的误差传递105nnxIdxx判据:若第n+1步的误差en+1与第n步的误差en满足则称此计算公式是绝对稳定的,否则称为不是绝对稳定的使用数值稳定的计算公式1||1nnee38尽量避免两相近数相减由可知,有两个相近的数相减时,可能会导致较大的误差出现。1212121212()rrrxxexxeexxxx2001199939尽量避免用绝对值很大的数做乘数由可知,若x1或x2很大时,可能导致|e(x1x2)|很大防止大数吃掉小数在数值运算时,若参加运算的数数量级相差很大,而计算机位数有限,又要作对阶处理,如果不注意运算次序,就可能导致小数被当作机器零处理,影响结果可靠性注意简化步骤,减少运算次数122112()exxxexe40作业P151.3,1.4