Transcript ch1 引言
工程数学 杨圣洪 13007432216 (手机) 2264454709(QQ) [email protected] 工程数学—引言 工程数学:复变函数、线性代数、概率论、场 论、数值计算或计算数学 ,等工程方面数学 计算过程 建模。用一个方程表示,还一个图。 设计求解数模的算法。伪代码,自然语言 编码实现,语言不限,matlab.m也可 用观测数据或原始公知数据进行运算。 可视化运算结果。图、表化,画很多的曲线 分析曲线,引出结果,提升自己算法的江湖地位。 设计求解数模的算法—核心 问题可算化: 有限维--代—无限维,多项式连续函数 有限过程—代-无限过程 定积分-数值积分 无穷级数取有限项 简单—代—复杂 ,尤其简单不断重复 如 简单重复xk+1=(xk+c/xk)/2求sqrt(c) 算法简单了,但在一定误差范围内与原问题 等价。 设计求解数模的算法—核心 秦九韶(中国 1202-1261)或Horner算法 p(x)=5+6x+7x2+8x3+9x4. 乘法:1+2+3+4 加法:4 p(x)=5+x(6+7(x+8(x+9x))) 乘法:4---n 加法:4 对于一般式p(x)=a0+a1x1+a2x2…anxn. b0=an, bk=an-k+bk-1x, (算例写黑板) 乘法:n(n+1)/2n,效率提高了! 加法:n不变 设计求解数模的算法—核心 求行列式的值Dn=|…|(板) Dn=(-1)t(i1,i2,…,in) ai1,1ai2,2…ain,n. 乘法次数 n!(n-1) 4阶实例 n=20, 乘法:20*19=4.6*1019, 3.3亿亿=3.3万万亿=3.3*108*108. 4.6*1019/3.3*1016=4.6*1000/3.3=1394=23.2 4G=4*1024*1024*1024=4294967296 4.6*1019/4294967296/3600/24/365=339年 转换三角形 (n-1)2+(n-2)2+…+1+(n-1) =n(n-1)(2n-1)/6+(n-1) 4阶实例 第二节:误差分析 误差分类 模型误差:少次要因素如飞行器, 观测(数据)误差:参数值测不准,预处理 公式(截断)误差:公式的近似式。sin(x) 舍入误差:能表示数有限,故存贮与计算总 要取舍,3.1415926897,8位机要舍 例:地球表面积A 第二节:误差分析 绝对误差:(x)=x'-x , x'=x+(x) 由于x不知求不出, |(x)|,为最后位半个单位 如:1800mm0.5mm, 0.5*10-n.到10-n是精确的,精确点后n位 10-(n+1)就看不准了,画图 相对误差:(x)=(x)/x (x)/x’.(2者差去推导) 第二节:误差分析 浮点数与有效数字 x=3.14159265 x’=3.14 y=314.159265 y’=314.16 精度高! z=0.0314159265 z’=0.03 有效数字多,精度高!浮点数标准式 fl(x)=0.a1a2…atm,t字长 进制 如t=3, =2,m=0,1,2 第一个数字非0 3位2进制:6组+0,其他以近似表示 第二节:误差分析 误差分类 模型误差:少次要因素如飞行器, 观测(数据)误差:参数值测不准,预处理 公式(截断)误差:公式的近似式。sin(x) 舍入误差:能表示数有限,故存贮与计算总 要取舍,3.1415926897,8位机要舍 例:地球表面积A 第二节:误差分析—舍入误差 fl(x)=0.a1a2…at m进制,t字长 如t=3, =2,m=0,1,2 a1非0,浮点到非0 m m=0,1,2 fl(x)=0.a1a2a32 a1=1,a2=0,1,a3=0,1 m=0,1,2共2(t-1)*3 0.100,0.101,0.110, 0.111 m=0 ,乘20 0.5, 0.625, 0.750, 0.875 0.100,0.101, 0.110, 0.111 m=1 ,乘21点右移1位 1.0, 1.25, 1.50, 1. 75 0.100,0.101,0.110,0.111 m=1 ,乘22点右移2位 2.0, 2.5, 3. 0, 3. 5 12个与0,3位实数很多 如0.51,0.53 表示为0.50,舍入误差:0.01,0.03,少于 0.125(1/8)的一半0.0625, 又如0.57,近似为0.625 第二节:误差分析—舍入误差 fl(x)=0.a1a2…at m进制,t字长 x'=a1a2…am.b1b2…bn. |(x)|=|x'-x|/|x| a1至少为1 0.5*10-n/(0.a1*10m)5*10-(n+m). 在字长为t的十进制的浮点数,表示为: m (a 0) x'=0.a1a2…at*10 1 |(x)|=|x'-x|/|x| a1至少为1 0.5*10-n/(0.a1)5*10-t. 舍入相对误差!与字长相关! 第二节:误差分析--误差的传播 0.1%---2.3% 观误扩大23倍 误差的传播 (p9) 实例ABC面积 a=100,b=101 C=PI/180。 sqrt(a2+b2-2abcosC)= sqrt((b-a)2+4absin2C/2 观误a=100.1 公式 真值 近似值 相差误差*100 a 100 100.1 (0.1/100 )*100 b-a 1 0.9 -0.1/1=10 (b-a)2 1 0.81 -0.19/1=19 4absin2C/2 3.0765 3.0796 0.0031/3.0765 前二者和 4.0765 3.8896 -0.1869/4.0765 sqrt(..) 2.0190 1.9722 -0.0468/2.0190 第二节:误差分析 0.1%---2.3% 观误扩大23倍 误差的传播 (p9)—原因与预防 (x1+x2)=(x1'+x2')-(x1+x2)=(x1)+(x2) (x1+x2)= (x1+x2)/(x1+x2) (在板上推) =x1x1/(x1+x2)+x2x2/(x1+x2) 若分母(x1+x2)很小(符号异值相近数相加),则 误差放得很大!(板) (x1-x2)= (x1-x2)/(x1-x2) (板) =x1x1/(x1-x2)-x2x2/(x1-x2) 刚才求面积的属于此情况! 第二节:误差分析 0.1%---2.3% 扩大23倍 误差的传播 (p10) (x1x2)=x1'x2'-x1x2=(x1+(x1))(x2+(x2) ) =x1(x2) +x2(x1)+(x1) (x2) 若x1或x2很大,则绝对误差很大,相对误差 (x1x2)=(x1(x2) +x2(x1)/(x1x2) =((x2)/x2 +(x1)/x1=(x1)+(x2) 乘法的相对误差=各个相加,也会起来越大! 第二节:误差分析 0.1%---2.3% 扩大23倍 误差的传播 (p10) (x1/x2)=x1'/x2'-x1/x2 =(x1+(x1))/(x2+(x2))-x1/x2 =[..]/[x2(x2+(x2))]=[..]/[x2x2] = (x1)/x2-x1(x2)/(x2)2. 若x2很小,则绝对误差很大,但相对误差基本不变 (x1/x2)= (x1)-(x2) (x1x2)=(x1)+(x2) 第二节:误差分析 0.1%---2.3% 扩大23倍 例2:500[sqrt(501)-sqrt(500)) 相近两数相减 计算值=500(sqrt(501)-sqrt(500)) =500(22.3830-22.3607)=500*0.0223=11.1500 f(500)=11.1748 误差=-0.0248 相对=-0.0022 转换x/(sqrt(x+1)-sqrt(x)) 计算值=500/(sqrt(501)+sqrt(500)) =500/(22.3830+22.3607) =500/44.7437=11.1748 f(500)=11.1748 误差=0.0 相对=0. 转换公式免相近两数相减,实力相当互掐!3数 第二节:误差分析 0.1%---2.3% 扩大23倍 例3:x2-(109+1)x+109=0 (x-109)(x-1)=0 得到 x1=109,x2=1 4位有效数字 =b2-4ac=(109+1)2 - 4*1*109 =(0.1000*1010+0.0000000001*1010)2 -0.4000*101*0.1000*1010 避免大吃小! =0.1000*1019-0.4000*1011 =0.1000*1019-0.0000000004000*1020 避免大吃小! =0.1000*1019=1.000*1018 x1=(0.1000*1010+sqrt(1.0000*1018)/(0.2000*10)=109. 10 18 x2=(0.1000*10 -sqrt(1.0000*10 )/(0.2000*10)=0. 避免相近两数减 第二节:误差分析 0.1%---2.3% 扩大23倍 例3:x2-(109+1)x+109=0 x=(-b-sgn(b)sqrt(b2-4ac))/(2a) 避相近两数减 =b2-4ac=(109+1)2 - 4*1*109 10 10 2 =(0.1000*10 +0.0000000001*10 ) 大吃小! -0.4000*101*0.1000*1010 =0.1000*1019-0.4000*1011 =0.1000*1019-0.0000000004000*1020 大吃小! =0.1000*1019=1.000*1018 x1=(0.1000*1010+sqrt(1.0000*1018)/(0.2000*10)=109. 9 9 x1x2=c/a ,x2=c/(a*x1)=10 /(1*10 )=1 同量级相除 第二节:误差分析 0.1%---2.3% 扩大23倍 例2:500[sqrt(501)-sqrt(500)) 相近两数相减 计算值=500(sqrt(501)-sqrt(500)) =500(22.3830-22.3607)=500*0.0223=11.1500 f(500)=11.1748 误差=-0.0248 相对=-0.0022 转换x/(sqrt(x+1)-sqrt(x)) 计算值=500/(sqrt(501)+sqrt(500)) =500/(22.3830+22.3607) =500/44.7437=11.1748 f(500)=11.1748 误差=0.0 相对=0. 转换公式免相近两数相减,实力相当互掐!3数 第二节:误差分析 0.1%---2.3% 扩大23倍 多数相加—绝对值从小到大相加 (p13) 记fl(x):x的机器表示式数 =(x)=(fl(x)-x)/x,则fl(x)=x(1+),形式上: fl(x1+x2)=(x1+x2)(1+1) fl(x1-x2)=(x1-x2)(1+2) fl(x1x2)=(x1x2)(1+3) fl(x1/x2)=(x1/x2)(1+4) 考虑多数相加的误差传播 第二节:误差分析 多数相加—从绝对值小到大相加 p13 fl(fl(x1+x2)+x3)=fl((x1+x2)(1+1)+x3) =((x1+x2)(1+1)+x3)(1+2) =(x1+x2+x3)(1+) 其中 =2+(x1+x2)1(1+2)/(x1+x2+x3) fl(x1+fl(x2+x3)) =(x1+x2+x3)(1+') '='2+(x2+x3)'1(1+'2)/(x1+x2+x3) , ', 1, 2, '1, '2相差无几, 若|(x1+x2)|<|(x2+x3)|,则< ' 故让小的先加 第二节:误差分析 多数相加—从绝对值小到大相加 p13 例4位浮点 A=12340+1+2+3+4 5 5 =((((0.1234*10 +0.00001*10 )+0.00002*1 05)+0.00003*105)+0.00004*105) 大吃小了 =(((0.1234*105+0.00002*105)+0.00003*10 5)+0.00004*105)=0.1234*105. 同数量级即对齐才能相加! =0.1234*105+(0.1*101+0.2*101+0.3*101+0 .4*101)= 0.1234*105 +(1*101) 5 5 = 0.1234*10 +0.0001*10 = 0.1235*105 +0.0001*105 第三节:算法的稳定性 误差总是难免的,但不要阻挡前进路 对于舍入误差: (1)避免|x1+x2|与|x1-x2|很小 (2)同量级加,小加小,聚小成大再加大 (3)大数相乘时,绝对误差会放大 除小数时,绝对误差会放大 相对误差相加。 观测误差呢? 第三节:算法的稳定性 误差总是难免的,但不要阻挡前进路 观测误差呢? (f(x))=f(x')-f(x)=f'(x)x+f''()(x)2/2 f'(x)x (f(x)=(f(x))/f(x) f'(x)x/f(x) =xf'(x)x/f(x) xf'(x)/f(x)小,则误差可控!迭代可控 希望找到的算法,将误差不断缩小,最 多是相加或相减,不能是倍增呀。 第三节:算法的稳定性 病态方程 例1:舍入误差引起解无效p14,2位有效数字 1 1 11 x1 2 x 2 3 x3 6 1 1 1 13 x 1 x 2 x 3 3 4 12 2 1 x1 1 x 2 1 x3 47 3 4 5 60 精确解:(1,1,1) x1 0.50 x 2 0.33x3 1.8 解: 0.55 x1 0.33x2 0.25 x3 1.1 0.33x1 0.25 x 2 0.20 x3 0.76 (-6.222,38.25,-33.65) 病态方程 第三节:算法的稳定性 病态方程 例1:舍入误差引起解无效p14 例2:wilkinson多项式 20 19 (x-1)(x-2)…(x-20)=x -210x +…+20! 精确解:1,2,3,…,20 a19'=a19+10-7,微小扰动,则产生剧烈变化 差之毫厘,失之千里! 此乃病态! 非病态方程称为良性方程,也会因为舍入误差 引起错误!一元二次方程解!