计算方法教程(第2版)习题答案
- 格式:pdf
- 大小:354.35 KB
- 文档页数:10
数值分析简明教程第⼆版课后习题答案(供参考)0.1算法1、(p.11,题1)⽤⼆分法求⽅程013=--x x 在[1,2]内的近似根,要求误差不超过10-3.【解】由⼆分法的误差估计式311*10212||-++=≤=-≤-εk k k a b x x ,得到100021≥+k .两端取⾃然对数得96.812ln 10ln 3≈-≥k ,因此取9=k ,即⾄少需2、(p.11,题2)证明⽅程210)(-+=x e x f x在区间[0,1]内有唯⼀个实根;使⽤⼆分法求这⼀实根,要求误差不超过21021-?。
【解】由于210)(-+=x e x f x,则)(x f 在区间[0,1]上连续,且012010)0(0<-=-?+=e f ,082110)1(1>+=-?+=e e f ,即0)1()0(⼜010)('>+=x e x f ,即)(x f 在区间[0,1]上是单调的,故)(x f 在区间[0,1]内有唯⼀实根.由⼆分法的误差估计式211*1021212||-++?=≤=-≤-εk k k a b x x ,得到1002≥k .两端取⾃然对数得6438.63219.322ln 10ln 2=?≈≥k ,因此取7=k ,即⾄少需⼆分0.2误差1.(p.12,题8)已知e=2.71828…,试问其近似值7.21=x ,71.22=x ,x 2=2.71,718.23=x 各有⼏位有效数字?并给出它们的相对误差限。
【解】有效数字:因为11102105.001828.0||-?=<=-K x e ,所以7.21=x 有两位有效数字;因为12102105.000828.0||-?=<=-K x e ,所以71.22=x 亦有两位有效数字;因为3310210005.000028.0||-?=<=-K x e ,所以718.23=x 有四位有效数字;%85.17.205.0||111=<-=x x e r ε; %85.171.205.0||222=<-=x x e r ε; %0184.0718.20005.0||333=<-=x x e r ε。
习题一1、解释下列术语计算机系统的外特性:通常所讲的计算机系统结构的外特性是指机器语言程序员或编译程序编写者所看到的外特性,即由他们所看到的计算机的基本属性(概念性结构和功能特性)。
计算机系统的内特性:计算机系统的设计人员所看到的基本属性,本质上是为了将有关软件人员的基本属性加以逻辑实现的基本属性。
模拟:模拟方法是指用软件方法在一台现有的计算机上实现另一台计算机的指令系统。
可移植性:在新型号机出台后,原来开发的软件仍能继续在升级换代的新型号机器上使用,这就要求软件具有可兼容性,即可移植性。
可兼容性是指一个软件可不经修改或只需少量修改,便可由一台机器移植到另一台机器上运行,即同一软件可应用于不同环境。
Amdahl定律:系统中对于某一部件采用某种更快的执行方式所能获得的系统性能改进程度,取决于这种执行方式被使用的频度或占总执行时间的比例。
虚拟机(Virtual Machine):指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
6、7、假定求浮点数平方根的操作在某台机器上的一个基准测试程序中占总执行时间的20%,为了增强该操作的性能,可采用两种不同的方法:一种是增加专门的硬件,可使求浮点数平方根操作的速度提高为原来的20倍;另一种方法是提高所有浮点运算指令的速度,使其为原来的2倍,而浮点运算指令的执行时间在总执行时间中占30%。
试比较这两种方法哪一种更好些。
答:增加硬件的方法的加速比Sp1=1.23, 另一种方法的加速比Sp2=1.176,经计算可知Sp1=方法更好些。
Sp2>Sp2第一种9、假设高速缓存Cache的工作速度为主存的5倍,且Cache被访问命中的概率T=为90%,则采用Cache能使整个存储系统获得多高的加速比?答:加速比,其中tm=5tc,代入公式、得到加速比S=3.33。
11、Flynn分类法的依据是什么,它与按“并行级”和“流水级”的分类方法有什么不同?答:Flynn分类法的依据是指令流和数据流多倍性概念进行分类的。
计算方法实验报告实验名称: 实验2 列主元素消去法解方程组 1 引言工程实际问题中,线型方程的系数矩阵一般为低阶稠密矩阵和大型稀疏矩阵。
用高斯消去法解Ax =b 时,可能出现)(k kk a 很小,用作除数会导致中间结果矩阵元素数量级严重增长和舍入误差的扩散,使结果不可靠;采用选主元素的三角分解法可以避免此类问题。
高斯消去法的消去过程,实质上是将A 分解为两个三角矩阵的乘积A =LU ,并求解Ly =b 的过程。
回带过程就是求解上三角方程组Ux =y 。
所以在实际的运算中,矩阵L 和U 可以直接计算出,而不需要任何中间步骤,从而在计算过程中将高斯消去法的步骤进行了进一步的简略,大大提高了运算速度,这就是三角分解法。
采用选主元的方式与列主元高斯消去法一样,也是为了避免除数过小,从而保证了计算的精确度。
2 实验目的和要求通过列主元素消去法求解线性方程组,实现P A =LU 。
要求计算解x ,L ,U ,整形数组IP (i ),(i =1,2,…,)(记录主行信息)。
3 算法原理与流程图(1)原理将A 分解为两个三角矩阵的乘积A =LU 。
对方程组的增广矩阵[]b A A ,=经过k-1步分解后,可变成如下形式:⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡→-------------n nnnjnkk n n n i in ij ik k i i i k kn kj kk k k k k k n k j k k k k k k k n j k k n j k k b a a a l l l b a a a l l l b a a a l l l y u u u u l l y u u u u u l y u u u u u u A1,211,211,211,1,1,11,12,11,122221,2222111,1,11,11211第k 步分解,为了避免用绝对值很小的数kku 作除数,引进量1111 (,1,,;1,2,,) ()/ (1,2,,;1,2,,)k kj kj km mj m k ik ik im mk kk m u a l u j k k n k n l a l u u i k k n k n -=-=⎧=-=+=⎪⎪⎨⎪=-=++=⎪⎩∑∑11(,1,,)k i ik im mkm s a l u i k k n -==-=+∑,于是有kk u =ks 。
算法设计与分析第二版课后习题及解答算法设计与分析基础课后练习答案习题1.14.设计一个计算的算法,n是任意正整数。
除了赋值和比较运算,该算法只能用到基本的四则运算操作。
算法求 //输入:一个正整数n2//输出:。
step1:a1; step2:若a*an 转step 3,否则输出a; step3:aa+1转step 2;5. a.用欧几里德算法求gcd(31415,14142)。
b. 用欧几里德算法求gcd(31415,14142),比检查min{m,n}和gcd(m,n)间连续整数的算法快多少倍?请估算一下。
a. gcd31415, 14142 gcd14142, 3131 gcd3131, 1618 gcd1618, 1513 gcd1513, 105 gcd1513, 105 gcd105, 43 gcd43, 19 gcd19, 5 gcd5, 4 gcd4, 1 gcd1, 0 1.b.有a可知计算gcd(31415,14142)欧几里德算法做了11次除法。
连续整数检测算法在14142每次迭代过程中或者做了一次除法,或者两次除法,因此这个算法做除法的次数鉴于1?14142 和 2?14142之间,所以欧几里德算法比此算法快1?14142/11 ≈1300 与2?14142/11 ≈ 2600 倍之间。
6.证明等式gcdm,ngcdn,m mod n对每一对正整数m,n都成立.Hint:根据除法的定义不难证明:如果d整除u和v, 那么d一定能整除u±v;如果d整除u,那么d也能够整除u的任何整数倍ku.对于任意一对正整数m,n,若d能整除m和n,那么d一定能整除n和rm mod nm-qn;显然,若d能整除n和r,也一定能整除mr+qn和n。
数对m,n和n,r具有相同的公约数的有限非空集,其中也包括了最大公约数。
故gcdm,ngcdn,r7.对于第一个数小于第二个数的一对数字,欧几里得算法将会如何处理?该算法在处理这种输入的过程中,上述情况最多会发生几次?Hint:对于任何形如0mn的一对数字,Euclid算法在第一次叠代时交换m和n, 即gcdm,ngcdn,m并且这种交换处理只发生一次.8.a.对于所有1≤m,n≤10的输入, Euclid算法最少要做几次除法?1次b. 对于所有1≤m,n≤10的输入, Euclid算法最多要做几次除法?5次gcd5,8习题1.21.农夫过河P?农夫W?狼 G?山羊 C?白菜2.过桥问题1,2,5,10---分别代表4个人, f?手电筒4. 对于任意实系数a,b,c, 某个算法能求方程ax^2+bx+c0的实根,写出上述算法的伪代码可以假设sqrtx是求平方根的函数算法Quadratica,b,c//求方程ax^2+bx+c0的实根的算法//输入:实系数a,b,c//输出:实根或者无解信息If a≠0D←b*b-4*a*cIf D0temp←2*ax1←-b+sqrtD/tempx2←-b-sqrtD/tempreturn x1,x2else if D0 return ?b/2*ael se return “no real roots”else //a0if b≠0 return ?c/belse //ab0if c0 return “no real numbers”else return “no real roots”5. 描述将十进制整数表达为二进制整数的标准算法a.用文字描述b.用伪代码描述解答:a.将十进制整数转换为二进制整数的算法输入:一个正整数n输出:正整数n相应的二进制数第一步:用n除以2,余数赋给Kii0,1,2,商赋给n第二步:如果n0,则到第三步,否则重复第一步第三步:将Ki按照i从高到低的顺序输出b.伪代码算法 DectoBinn//将十进制整数n转换为二进制整数的算法//输入:正整数n//输出:该正整数相应的二进制数,该数存放于数组Bin[1n]中i1while n!0 doBin[i]n%2;nintn/2;i++;while i!0 doprint Bin[i];i--;9.考虑下面这个算法,它求的是数组中大小相差最小的两个元素的差.算法略对这个算法做尽可能多的改进.算法 MinDistanceA[0..n-1]//输入:数组A[0..n-1]//输出:the smallest distance d between two of its elements 习题1.3考虑这样一个排序算法,该算法对于待排序的数组中的每一个元素,计算比它小的元素个数,然后利用这个信息,将各个元素放到有序数组的相应位置上去.a.应用该算法对列表”60,35,81,98,14,47”排序b.该算法稳定吗?c.该算法在位吗?解:a. 该算法对列表”60,35,81,98,14,47”排序的过程如下所示:b.该算法不稳定.比如对列表”2,2*”排序c.该算法不在位.额外空间for S and Count[]4.古老的七桥问题第2章习题2.17.对下列断言进行证明:如果是错误的,请举例a. 如果tn∈Ogn,则gn∈Ωtnb.α0时,Θαgn Θgn解:a这个断言是正确的。
word 文档下载后可自由复制编辑你计算机系统结构清华第 2 版习题解答word 文档下载后可自由复制编辑1 目录1.1 第一章(P33)1.7-1.9 (透明性概念),1.12-1.18 (Amdahl定律),1.19、1.21 、1.24 (CPI/MIPS)1.2 第二章(P124)2.3 、2.5 、2.6 (浮点数性能),2.13 、2.15 (指令编码)1.3 第三章(P202)3.3 (存储层次性能), 3.5 (并行主存系统),3.15-3.15 加 1 题(堆栈模拟),3.19 中(3)(4)(6)(8)问(地址映象/ 替换算法-- 实存状况图)word 文档下载后可自由复制编辑1.4 第四章(P250)4.5 (中断屏蔽字表/中断过程示意图),4.8 (通道流量计算/通道时间图)1.5 第五章(P343)5.9 (流水线性能/ 时空图),5.15 (2种调度算法)1.6 第六章(P391)6.6 (向量流水时间计算),6.10 (Amdahl定律/MFLOPS)1.7 第七章(P446)7.3 、7.29(互连函数计算),7.6-7.14 (互连网性质),7.4 、7.5 、7.26(多级网寻径算法),word 文档下载后可自由复制编辑7.27 (寻径/ 选播算法)1.8 第八章(P498)8.12 ( SISD/SIMD 算法)1.9 第九章(P562)9.18 ( SISD/多功能部件/SIMD/MIMD 算法)(注:每章可选1-2 个主要知识点,每个知识点可只选 1 题。
有下划线者为推荐的主要知识点。
)word 文档 下载后可自由复制编辑2 例 , 习题2.1 第一章 (P33)例 1.1,p10假设将某系统的某一部件的处理速度加快到 10倍 ,但该部件的原处理时间仅为整个运行时间的40%,则采用加快措施后能使整个系统的性能提高多少?解:由题意可知: Fe=0.4, Se=10,根据 Amdahl 定律S n To T n1 (1Fe )S n 1 10.6 0.4100.64 Fe Se 1.56word 文档 下载后可自由复制编辑例 1.2,p10采用哪种实现技术来求浮点数平方根 FPSQR 的操作对系统的性能影响较大。
C语言编程习题第二章习题2-25.用二分法编程求6x4 -40x2+9=0 的所有实根。
#include <stdio.h>#include <math.h>#define N 10000double A,B,C;double f(double x){return (A*x*x*x*x+B*x*x+C);}void BM(double a,double b,double eps1,double eps2){int k;double x,xe;double valuea = f(a);double valueb = f(b);if (valuea > 0 && valueb > 0 || valuea <0 && valueb < 0) return;printf("Finding root in the range: [%.3lf, %.3lf]\n", a, b);for(k=1;k<=N;k++) {x=(a+b)/2;xe=(b-a)/2;if(fabs(xe)<eps2 || fabs(f(x))<eps1) {printf("The x value is:%g\n",x);printf("f(x)=%g\n\n",f(x));return;}if(f(a)*f(x)<0) b=x;else a=x;}printf("No convergence!\n");}int main(){double a,b,eps1,eps2,step,start;printf("Please input A,B,C:\n");scanf("%lf %lf %lf",&A,&B,&C);printf("Please input a,b, step, eps1,eps2:\n");scanf("%lf %lf %lf %lf %lf",&a,&b,&step,&eps1,&eps2);for (start=a; (start+step) <= b; start += step) { double left = start;double right = start + step;BM(left, right, eps1, eps2);}return 0;}运行:Please input A,B,C:6 -40 9Please input a,b, step, eps1,eps2:-10 10 1 1e-5 1e-5Finding root in the range: [-3.000, -2.000]The x value is:-2.53643f(x)=-0.00124902Finding root in the range: [-1.000, 0.000]The x value is:-0.482857f(x)=0.00012967Finding root in the range: [0.000, 1.000]The x value is:0.482857f(x)=0.00012967Finding root in the range: [2.000, 3.000]The x value is:2.53643f(x)=-0.00124902有时若把判别语句if(fabs(xe)<eps2 || fabs(f(x))<eps1)改为if(fabs(xe)<eps2 && fabs(f(x))<eps1)会提高精度,对同一题运行结果:Finding root in the range: [-3.000, -2.000]The x value is:-2.53644f(x)=-4.26496e-007Finding root in the range: [-1.000, 0.000]The x value is:-0.482861f(x)=-7.3797e-006Finding root in the range: [0.000, 1.000]The x value is:0.482861f(x)=-7.3797e-006Finding root in the range: [2.000, 3.000]The x value is:2.53644f(x)=-4.26496e-007习题2-35. 请用埃特金方法编程求出x=tgx在4.5(弧度)附近的根。
第一章 误差1 问3.142,3.141,722分别作为π的近似值各具有几位有效数字?分析 利用有效数字的概念可直接得出。
解 π=3.141 592 65…记x 1=3.142,x 2=3.141,x 3=722.由π- x 1=3.141 59…-3.142=-0.000 40…知3411110||1022x π--⨯<-≤⨯ 因而x 1具有4位有效数字。
由π- x 2=3.141 59…-3.141=-0.000 59…知2231021||1021--⨯≤-<⨯x π因而x 2具有3位有效数字。
由π-722=3.141 59 …-3.142 85…=-0.001 26…知231021|722|1021--⨯≤-<⨯π因而x 3具有3位有效数字。
2 已知近似数x*有两位有效数字,试求其相对误差限。
分析 本题显然应利用有效数字与相对误差的关系。
解 利用有效数字与相对误差的关系。
这里n=2,a 1是1到9之间的数字。
%5101101|*||)(|1211*=⨯≤⨯≤-=+-+-n rx x x ε3 已知近似数的相对误差限为0.3%,问x*至少有几位有效数字?分析 本题利用有效数字与相对误差的关系。
解 a 1是1到9间的数字。
1112*10110113%3.0)(--⨯≤⨯=<=x r ε 设x*具有n 位有效数字,令-n+1=-1,则n=2,从而x*至少具有2位有效数字。
4 计算sin1.2,问要取几位有效数字才能保证相对误差限不大于0.01%。
分析 本题应利用有效数字与相对误差的关系。
解 设取n 位有效数字,由sin1.2=0.93…,故a 1=9。
411*10%01.01021|*||*||)(-+-=≤⨯≤-=n r a x x x x ε解不等式411101021-+-≤⨯n a 知取n=4即可满足要求。
5 计算76017591-,视已知数为精确值,用4位浮点数计算。