数值计算中的基本原则第1页,共18页,星期日,2025年,2月5日
数值计算中的基本原则(1)避免绝对值小的数做除数;(2)避免两相近数相减;(3)防止大数“吃”小数现象a=109,b=9,设想在8位浮点数系中相加a+b=1.0000000×109+0.000000009×109由于只保留8位有效数,数据09被舍去,实际加法操作a+b计算结果是将a的数据作为计算结果赋值给a+b.2/18第2页,共18页,星期日,2025年,2月5日
(4)尽量减少计算工作量(乘、除法次数)例计算P(x)=1+2x+3x2+4x3+5x4的值P(x)=1+x(2+x(3+x(4+5x)))一个应用:2进制数转换为10进制数(11101110)2=27+26+25+0+23+22+2+0=((((((1·2+1)2+1)2+0)2+1)2+1)2+1)2+0=2383/18第3页,共18页,星期日,2025年,2月5日
求多项式值的秦九韶算法输入x;a0,a1,…,anS←a0;u←1k从1到n循环u←x×uS←S+ak×u输出数据S;结束输入x;a0,a1,…,anS←ank从n到1循环S←ak-1+x×S输出数据S;结束秦九韶算法P(x)=a0+a1x+a2x2+······+anxn4/18第4页,共18页,星期日,2025年,2月5日
例1计算(n=0,1,···,20)5/18第5页,共18页,星期日,2025年,2月5日
初值:I0=1–e–1≈0.63212055882856n=20时,S20=-30.19239488558378递推公式:In=1–nIn-1(I0=1-e-1)S0=1-exp(-1);S(1)=1-S0;forn=2:20S(n)=1-n*S(n-1)end实际递推:Sn=1-nSn-1|e(S0)|=|S0–I0|10-15有误!6/18第6页,共18页,星期日,2025年,2月5日
In=1-nIn-1Sn-In=-n(Sn-1-In-1)e(Sn)=–ne(Sn-1)=······=(n!)(–1)ne(S0)新算法:In-1=(1-In)/nS(30)=1/31forn=30:-1:2S(n-1)=(1-S(n))/n;endS0=1-S(1),S(1:21)初值误差在算法执行过程中不断增大,这种算法称为数值不稳定算法。7/18Sn-In=–(Sn-1-In-1)/n第7页,共18页,星期日,2025年,2月5日
在算法执行过程中,舍入误差对计算结果影响不大的一类算法被称为数值稳定算法;否则称为不稳定算法.初始误差在算法执行过程中不断减小,这种算法称为数值稳定算法。|e(S20)|=|S20-I20|=|(1-S21/21)-(1-I21/21)|=|S21-I21|/21=·······=|S30-I30|/(21·22·23·····30)8/18第8页,共18页,星期日,2025年,2月5日
rd例2.水中浮球问题有一半径r=10cm的球体,密度?=0.638.球体浸入水中后,浮出水面的高度h是多少?设球体浸入水中的深度d.根据阿基米德定律,物体排开水的质量就是水对物体的浮力。整理得:d3–3rd2+4r3?=09/18第9页,共18页,星期日,2025年,2月5日
由?=0.638,r=10.代入,得d3–30d2+2552=0令f(x)=x3–30x2+2552,函数图形如下所示求解方程f(x)=0,即是求函数f(x)的零点.f(x)的零点所在区间为[10,15]10/18第10页,共18页,星期日,2025年,2