按关键词阅读: 航空 长沙 课件 方案 建设 专业 重点 软件技术 职业技术学院
15、,ep2: 0 1 0.0001 0.0001 the solve is: 0.000031,数值计算,例5 用二分法求任意函数的 f(x)的根 #include #define JMAX 40 允许迭代的最大次数 float rtbis(float (*func)(float), float x1, float x2, float xacc) 已知位于x1和x2之间的函数func , 用二分法求其根 。
在精度达到xacc之前 , 这个根将被不断修正 , 并最终以rtb返回 int j;
float dx, f, fmid, xmid, rtb;
f=(*func)(x1);
fmid=(*func)(x2 。
16、);
,数值计算,if (f*fmid = 0.0) printf(Root must be bracketed for bisection in rtbis);
rtb = f 0.0 ? (dx=x2-x1,x1) : (dx=x1-x2,x2);
for (j=1;
j=JMAX;
j+) fmid=(*func)(xmid=rtb+(dx *= 0.5);
if (fmid = 0.0) rtb=xmid;
if (fabs(dx) xacc | fmid = 0.0) return rtb;
printf(Too many bisections in rtbis);
return 0.0;
。
17、 #undef JMAX,数值计算,例6 秦九韶法计算多项式的值 。
,算法分析: 秦九韶法如下;,如果能看到1的真谛:不断地计算ax+b , 程序也能编出 , 若将之改写成:,数值计算,由2式知:,对应赋值语句: sN=aN;
,对应循环语句: for(i=n-1;
i=0;
i-) si=si+1*x+ai;
,数值计算,#define N 5 main( ) int i;
float aN+1, sN+1, x;
printf(请输入多项式的各个系数:n);
for(i=0;
i=N;
i+) printf(a%d: ,i);
scanf(%f, ,printf( 请输入x值:); scanf(%f, ,数值计 。
18、算,假设计算多项式:,当x=2的值 。
程序运行结果为: 请输入多项式的系数: a0=3.5 a1=2 a2=1 a3=0 a4=2 a5=1.2 请输入x的值:2 f(2.00000)=81.900002,数值计算,例7 用迭代法求一个数x(0)的平方根 。
求平方根的迭代公式可以为:,其中 , ,是为x指定的初始平方根 , ,是为所求平方根指定的精度 。
,数值计算,#include float def_sqrt( float x) float x0,x1;
x0=x/2;
x1=(x0+x/x0)/2;
while(fabs(x1-x0)1e-6) /*迭代过程 , 精度为*/ x0=x1;
x1=(x0+ 。
19、x/x0)/2;
return x1;
,main( ) float x;
printf( please input x: );
scanf(%f, 程序运行结果: please input x: 2 def_sqrt: 1.414214 sqrt: 1.414214,在数值计算时应注意的几个问题,顺序:基本运算顺序,一、减少运算次数, 不仅能提高计算精度 , 而且能减少误差的积累,1、对同一种算法(计算方式) , 要选用计算量少的运算次序,例如,精度(数值稳定性).,运算方案能否控制误差的传播和积累以保证计算结果有足够的,一般标准,运算次数的多少(计算效率);,运算过程是否规律(易编程);,需要记录 。
20、的中间结果的多少(储存量);,精度(数值稳定性).,运算方案能否控制误差的传播和积累以保证计算结果有足够的,运算次数的多少(计算效率);,例1,(b) 利用秦九韶算法:,(a) 直接计算每一项再求和:,解:,例2,解:,(a) 作矩阵和向量的乘法:略.,(b) 作向量的内积和加法:,计算次数少 过程规律,乘除法: kn,乘除法: kn2,2、对于不同的算法 , 要注意收敛速度 , 讲效率,例3 计算 ln2 的近似值 , 要求误差小于10.,解:, 计算量太大; 各项的舍入误差会损失和的有效数字,(b) 用级数 来计算,用前 9 项(即取 m = 8)计算就能达到精度要求:,舍入误差,(a) 用级数 来计 。
21、算,否则 , 则称这个算法是数值不稳定的 。
,二、 数值计算中要构造和使用数值稳定的计算方法,算法是数值稳定的,计算结果受计算过程中舍入误差影响较小时 。
,1、注意计算机数系运算特点,有理数的有限数集 , 即浮点集,例4 讨论在计算机数系中分别用公式,解:,无误差时 , 必相等;,有舍入误差时 , 可能不相等 , ,6.799,-1.556,解:,在实数集上 , ,取4位有效数字近似计算:,非严格单调序列 且极限也不等于a,4位有效数字舍入运算:,1234+0.4+0.3+0.2+0.1=1234,0.4+0.3+0.2+0.1+1234=1235,若出现“溢出”应立即中断,应避免出现“大数吃小数”,事先预防 事后解决, 。
22、例7,解:,可防溢出,精确运算:,例6,例5,2、防止两接近的数相减,例8 求下列方程的根,解:,用 8 位浮点数 (有效数字)计算,用 4 位浮数点(有效数字)计算,两接近数相减 损失了有效数字,仍用4 位浮点数计算,数值稳定 的方法,减法本身完全正确,误差传播的研究十分重要,是因为求 的误差(并不大), 进行减法后导致不应忽视的后果,准确,逆向递推公式,例9 当 n = 0,1,2,8 时,求积分 的近似值.,用递推关系进行计算时必须注意误差的积累.,解:,错误的原因?,3、设法控制误差的传播,逆向递推公式:,例10 设有方程组,将系数舍入成 2 位浮点数, 则方程为,例11,三、计算过程 。
【长沙|长沙航空职业技术学院软件技术重点专业建设方案课件】23、中应十分小心处理病态的数学问题,病态问题一般要用高精度(双精度)计算或解病态问题的方法解决,以上两问题称为病态的问题 , 病态是问题本身固有的,线性齐次方程,数值计算中应注意的问题,1、引言 (1)大地电磁(Magnetotelluric , MT) 大地电磁是一种利用天然交变电磁场研究浅深部地球电性结构的一种地球物理勘探方法 。
来源:(未知)
【学习资料】网址:/a/2021/0329/0021808260.html
标题:长沙|长沙航空职业技术学院软件技术重点专业建设方案课件( 三 )