数值计算方法作业
数值计算方法试题和答案解析
数值计算方法试题一一、 填空题(每空1分,共17分)1、如果用二分法求方程043=-+x x 在区间]2,1[内的根精确到三位小数,需对分( )次。
2、迭代格式)2(21-+=+k k k x x x α局部收敛的充分条件是α取值在( )。
3、已知⎪⎩⎪⎨⎧≤≤+-+-+-≤≤=31)1()1()1(2110)(233x c x b x a x x x x S 是三次样条函数,则a =( ),b =( ),c =( )。
4、)(,),(),(10x l x l x l n 是以整数点n x x x ,,,10 为节点的Lagrange 插值基函数,则∑==nk kx l0)(( ),∑==nk k jk x lx 0)((),当2≥n 时=++∑=)()3(204x l x xk k n k k( )。
5、设1326)(247+++=x x x x f 和节点,,2,1,0,2/ ==k k x k 则=],,,[10n x x x f 和=∆07f 。
6、5个节点的牛顿-柯特斯求积公式的代数精度为 ,5个节点的求积公式最高代数精度为 。
7、{}∞=0)(k k x ϕ是区间]1,0[上权函数x x =)(ρ的最高项系数为1的正交多项式族,其中1)(0=x ϕ,则⎰=14)(dx x x ϕ 。
8、给定方程组⎩⎨⎧=+-=-221121b x ax b ax x ,a 为实数,当a 满足 ,且20<<ω时,SOR 迭代法收敛。
9、解初值问题00(,)()y f x y y x y '=⎧⎨=⎩的改进欧拉法⎪⎩⎪⎨⎧++=+=++++)],(),([2),(]0[111]0[1n n n n n n n n n n y x f y x f h y y y x hf y y 是阶方法。
10、设⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=11001a a a a A ,当∈a ( )时,必有分解式T LL A =,其中L为下三角阵,当其对角线元素)3,2,1(=i l ii 满足( )条件时,这种分解是唯一的。
数值计算方法习题答案(第二版)(绪论)
数值计算⽅法习题答案(第⼆版)(绪论)数值分析(p11页)4 试证:对任给初值x 0,0)a >的⽜顿迭代公式112(),0,1,2,......k a k k x x x k +=+= 恒成⽴下列关系式:2112(1)(,0,1,2,....(2)1,2,......k k k x k x x k x k +-=-=≥=证明:(1)(21122k k k k k k x a x x x x +-??-=+==? ??(2)取初值00>x ,显然有0>k x ,对任意0≥k ,a a x a x x a x x k k k k k ≥+-= +=+2121216 证明:若k x 有n 位有效数字,则n k x -?≤-110218,⽽()k k k k k x x x x x 288821821-=-???? ??+=-+ nn k k x x 2122110215.22104185.28--+?=??<-∴>≥ 1k x +∴必有2n 位有效数字。
8 解:此题的相对误差限通常有两种解法.①根据本章中所给出的定理:(设x 的近似数*x 可表⽰为m n a a a x 10......021*?±=,如果*x 具有l 位有效数字,则其相对误差限为()11 **1021--?≤-l a x x x ,其中1a 为*x 中第⼀个⾮零数)则7.21=x ,有两位有效数字,相对误差限为025.010221111=??≤--x x e 71.22=x ,有两位有效数字,相对误差限为025.010221122=??≤--x x e 3 2.718x =,有两位有效数字,其相对误差限为:00025.010221333=??≤--x e x ②第⼆种⽅法直接根据相对误差限的定义式求解对于7.21=x ,0183.01<-e x∴其相对误差限为00678.07.20183.011≈<-x e x 同理对于71.22=x ,有003063.071.20083.022≈<-x e x 对于718.23=x ,有00012.0718.20003.033≈<-x e x备注:(1)两种⽅法均可得出相对误差限,但第⼀种是对于所有具有n 位有效数字的近似数都成⽴的正确结论,故他对误差限的估计偏⼤,但计算略简单些;⽽第⼆种⽅法给出较好的误差限估计,但计算稍复杂。
丁丽娟《数值计算方法》五章课后实验题答案(源程序很详细,且运行无误)
丁丽娟《数值计算方法》五章课后实验题答案(源程序都是自己写的,很详细,且保证运行无误)我做的五章数值实验作业题目如下:第二章:1、2、3、4题第三章:1、2题第四章:1、2题第六章:2、3题第八章:1、2题第二章1:(1) 对A进行列主元素三角分解:function [l u]=myfun(A) n=size(A); for k=1:n for i=k:n sum=0; m=k; for j=1:(k-1) sum=sum+A(i,j)*A(j,k); end s(i)=A(i,k)-sum; if abs(s(m))<abs(s(i)) m=i; end end for j=1:n c=A(m,j); A(m,j)=A(k,j); A(k,j)=c; end for j=k:n sum=0; for r=1:(k-1) sum=sum+A(k,r)*A(r,j); end u(k,j)=A(k,j)-sum; A(k,j)=u(k,j); end for i=1:n l(i,i)=1; end for i=(k+1):n sum=0; for r=1:(k-1) sum=sum+A(i,r)*u(r,k); end l(i,k)=(A(i,k)-sum)/u(k,k); A(i,k)=l(i,k); end end 的列主元素三角分解:求A的列主元素三角分解:>>A=[1 1 1 1 1;1 2 3 4 5;1 3 6 10 15;1 4 10 20 35;1 5 15 35 70]; >>[L,U]=myfun(A) 结果:L = 1.0000 0 0 0 0 1.0000 1.0000 0 0 0 1.0000 0.5000 1.0000 0 0 1.0000 0.7500 0.7500 1.0000 0 1.0000 0.2500 0.7500 -1.0000 1.0000 U = 1.0000 1.0000 1.0000 1.0000 1.0000 0 4.0000 14.0000 34.0000 69.0000 0 0 -2.0000 -8.0000 -20.5000 0 0 0 -0.5000 -2.3750 0 0 0 0 -0.2500 (2) 求矩阵的逆矩阵A -1: inv(A) 结果为:ans = 5 -10 10 -5 1 -10 30 -35 19 -4 10 -35 46 -27 6 -5 19 -27 17 -4 1 -4 6 -4 1 (3)检验结果:E=diag([1 1 1 1 1]) A\E ans = 5 -10 10 -5 1 -10 30 -35 19 -4 10 -35 46 -27 6 -5 19 -27 17 -4 1 -4 6 -4 1 2: 程序:程序:function d=myfun(a,b,c,d,n) for i=2:n l(i)=a(i)/b(i-1); a(i)=l(i); u(i)=b(i)-c(i-1)*a(i); b(i)=u(i); y(i)=d(i)-a(i)*d(i-1); d(i)=y(i); end x(n)=d(n)/b(n); d(n)=x(n); for i=(n-1):-1:1 x(i)=(d(i)-c(i)*d(i+1))/b(i); d(i)=x(i); end 求各段电流量程序:求各段电流量程序:for i=2:8 a(i)=-2; end b=[2 5 5 5 5 5 5 5]; c=[-2 -2 -2 -2 -2 -2 -2]; V=220; R=27; d=[V/R 0 0 0 0 0 0 0]; n=8; I=myfun(a,b,c,d,n) 运行程序得:运行程序得:I = 8.1478 4.0737 2.0365 1.0175 0.5073 0.2506 0.1194 0.0477 3:程序:(1)求矩阵A和向量b的matlab程序:function [A b]=myfun(n) for i=1:n X(i)=1+0.1*i; end for i=1:n for j=1:n A(i,j)=X(i)^(j-1); end end for i=1:n b(i)=sum(A(i,:)); end 求n=5时A1,b1及A1的2-条件数程序运行结果如下:条件数程序运行结果如下: n=5;[A1,b1]=myfun(n) A1 = 1.0000 1.1000 1.2100 1.3310 1.4641 1.0000 1.2000 1.4400 1.7280 2.0736 1.0000 1.3000 1.6900 2.1970 2.8561 1.0000 1.4000 1.9600 2.7440 3.8416 1.0000 1.5000 2.2500 3.3750 5.0625 b1 = 6.1051 7.4416 9.0431 10.9456 13.1875 cond2=cond(A1,2)cond2 = 5.3615e+005 条件数程序运行结果如下:求n=10时A2,b2及A2的2-条件数程序运行结果如下:n=10; [A2,b2]=myfun(n) A2 = 1.0000 1.1000 1.2100 1.3310 1.4641 1.6105 1.7716 1.9487 2.1436 2.3579 1.0000 1.2000 1.4400 1.7280 2.0736 2.4883 2.9860 3.5832 4.2998 5.1598 1.0000 1.3000 1.6900 2.1970 2.8561 3.7129 4.8268 6.2749 8.1573 10.6045 1.0000 1.4000 1.9600 2.7440 3.8416 5.3782 7.5295 10.5414 14.7579 20.6610 1.0000 1.5000 2.2500 3.3750 5.0625 7.5938 11.3906 17.0859 25.6289 38.4434 1.0000 1.6000 2.5600 4.0960 6.5536 10.4858 16.7772 26.8435 42.9497 68.7195 1.0000 1.7000 2.8900 4.9130 8.3521 14.1986 24.1376 41.0339 69.7576 118.5879 1.0000 1.8000 3.2400 5.8320 10.4976 18.8957 34.0122 61.2220 110.1996 198.3593 1.0000 1.9000 3.6100 6.8590 13.0321 24.7610 47.0459 89.3872 169.8356 322.6877 1.0000 2.0000 4.0000 8.0000 16.0000 32.0000 64.0000 128.0000 256.0000 512.0000 b2 = 1.0e+003 * 0.0159 0.0260 0.0426 0.0698 0.1133 0.1816 0.2866 0.4451 0.6801 1.0230 cond2=cond(A2,2) cond2 = 8.6823e+011 条件数程序运行结果如下:求n=20时A3,b3及A3的2-条件数程序运行结果如下:n=20; [A3,b3]=myfun(n) A3 = 1.0e+009 * Columns 1 through 10 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 11 through 20 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0001 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0001 0.0001 0.0002 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0001 0.0001 0.0003 0.0005 0.0000 0.0000 0.0000 0.0000 0.0000 0.0001 0.0001 0.0003 0.0006 0.0013 0.0000 0.0000 0.0000 0.0000 0.0001 0.0001 0.0003 0.0007 0.0015 0.0032 0.0000 0.0000 0.0000 0.0001 0.0001 0.0003 0.0006 0.0014 0.0032 0.0075 0.0000 0.0000 0.0000 0.0001 0.0002 0.0005 0.0012 0.0029 0.0070 0.0167 0.0000 0.0000 0.0001 0.0001 0.0004 0.0009 0.0023 0.0058 0.0146 0.0364 0.0000 0.0000 0.0001 0.0002 0.0006 0.0017 0.0044 0.0113 0.0295 0.0766 0.0000 0.0001 0.0002 0.0004 0.0011 0.0030 0.0080 0.0215 0.0581 0.1570 0.0000 0.0001 0.0002 0.0007 0.0018 0.0051 0.0143 0.0400 0.1119 0.3133 0.0000 0.0001 0.0004 0.0010 0.0030 0.0086 0.0250 0.0726 0.2105 0.6103 0.0001 0.0002 0.0005 0.0016 0.0048 0.0143 0.0430 0.1291 0.3874 1.1623 b3 = 1.0e+009 * Columns 1 through 10 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0001 0.0002 0.0004 0.0010Columns 11 through 20 0.0025 0.0059 0.0132 0.0287 0.0606 0.1246 0.2494 0.4874 0.9316 1.7434 cond2=cond(A3,2) cond2 =3.2395e+022 由上述运行结果可知:它们是病态的,而且随着n的增大,矩阵的病态变得严重。
数值计算方法大作业
题目利用数值计算方法求取基尼系数姓名与学号指导教师年级与专业所在学院一、问题综述:基尼系数(Gini coefficient),是20世纪初意大利学者科拉多·吉尼根据劳伦茨曲线所定义的判断收入分配公平程度的指标。
是比例数值,在0和1之间。
基尼指数(Gini index)是指基尼系数乘100倍作百分比表示。
在民众收入中,如基尼系数最大为“1”,最小等于“0”。
前者表示居民之间的收入分配绝对不平均(即所有收入都集中在一个人手里,其余的国民没有收入),而后者则表示居民之间的收入分配绝对平均,即人与人之间收入绝对平等,但这两种情况只出现在理论上;因此,基尼系数的实际数值只能介于0~1之间,基尼系数越小收入分配越平均,基尼系数越大收入分配越不平均。
设右图中的实际收入分配曲线(红线)和收入分配绝对平等线(绿线)之间的面积为A,和收入分配绝对不平等线(蓝线)之间的面积为B,则表示收入与人口之间的比例的基尼系数为AA+B。
如果A为零,即基尼系数为0,表示收入分配完全平等(红线和绿线重叠);如果B为零,则系数为1,收入分配绝对不平等(红线和蓝线重叠)。
该系数可在0和1之间取任何值。
实际上,一般国家的收入分配,既不是完全平等,也不是完全不平等,而是在两者之间,劳伦茨曲线为一条凸向横轴的曲线。
收入分配越趋向平等,劳伦茨曲线的弧度越小(斜度越倾向45度),基尼系数也越小;反之,收入分配越趋向不平等,劳伦茨曲线的弧度越大,那么基尼系数也越大。
基尼系数的调节需要国家通过财政政策进行国民收入的二次分配,例如对民众的财政公共服务支出和税收等,从而让收入均等化,令基尼系数缩小。
基尼系数由于给出了反映居民之间贫富差异程度的数量界线,可以较客观、直观地反映和监测居民之间的贫富差距,预报、预警和防止居民之间出现贫富两极分化。
因此得到世界各国的广泛认同和普遍采用。
联合国有关组织规定:●若低于0.2表示收入平均;●0.2-0.3表示相对平均;●0.3-0.4表示相对合理;●0.4-0.5表示收入差距大;●0.6以上表示收入差距悬殊。
数值计算方法 练习题
数值计算方法练习题习题一1. 下列各数都是经过四舍五入得到的近似数,试指出它们有几位有效数字以及它们的绝对误差限、相对误差限。
(1);(2);(3);(4);(5);(6);(7);2. 为使下列各数的近似值的相对误差限不超过,问各近似值分别应取几位有效数字?3. 设均为第1题所给数据,估计下列各近似数的误差限。
(1);(2);(3)4. 计算,取,利用下列等价表达式计算,哪一个的结果最好?为什么?(1);(2);(3)(4)5. 序列满足递推关系式若(三位有效数字),计算时误差有多大?这个计算过程稳定吗?6. 求方程的两个根,使其至少具有四位有效数字(要求利用。
7. 利用等式变换使下列表达式的计算结果比较精确。
(1);(2)(3);(4)8. 设,求证:(1)(2)利用(1)中的公式正向递推计算时误差增大;反向递推时误差函数减小。
9.设x>0,x*的相对误差为δ,求f(x)=ln x的误差限。
10.下列各数都是经过四舍五入得到的近似值,试指出它们有几位有效数字,并给出其误差限与相对误差限。
11.下列公式如何才比较准确?(1)(2)12.近似数x*=0.0310,是位有数数字。
13.计算取,利用式计算误差最小。
四个选项:习题二1. 已知,求的二次值多项式。
2. 令求的一次插值多项式,并估计插值误差。
3. 给出函数的数表,分别用线性插值与二次插值求的近似值,并估计截断误差。
0.4 0.5 0.6 0.7 0.80.38942 0.47943 0.56464 0.64422 0.717364. 设,试利用拉格朗日余项定理写出以为节点的三次插值多项式。
5. 已知,求及的值。
6. 根据如下函数值表求四次牛顿插值多项式,并用其计算和的近似值。
X 1.615 1.634 1.702 1.828 1.921F (x) 2.41450 2.46459 2.65271 3.03035 3.340667. 已知函数的如下函数值表,解答下列问题(1)试列出相应的差分表;(2)分别写出牛顿向前插值公式和牛顿向后插值公式。
数值计算方法上机作业
《数值计算方法》上机作业学院:机械学院专业:机械设计及理论姓名:陈国保学号:2010412118日期:2010年12月18日第二章:插值法 2.1,问题:1.编制通用程序,对n+1个节点i x 及()ii y f x = (0,,)i n = (1)n 次拉格朗日插值计算公式Ln(x); (2)n 次牛顿向前插值计算公式; (3)n 次牛顿向后插值计算公式; 2.已知()ln ,[,][1,2]f x x a b ==,取0.1,1,01,,10.i h x i hi ==+=用通用程序计算ln1.54及ln1.98的近似值。
流程图:2.2,源程序:主调函数:#include <stdio.h>#include <math.h>float Ln(float x1,int n,float x[80],float y[80]);float Nnf(float x1,int n,float x[80],float y[80]);float Nnr(float x1,int n,float x[80],float y[80]);main(){float x[80],y[80],x1,h,f_Ln,f_Nnf,f_Nnr;int n,i;//输入插值点printf("Please enter the interpolating point x:");scanf("%f",&x1);//输入拟合阶数printf("Enter the order n:");scanf("%d",&n);//输入已知数表的第一点x坐标printf("Enter the start point:");scanf("%f",&x[0]);//输入插值步长printf("Enter the step size h:");scanf("%f",&h);//计算已知数表的第一点y坐标y[0]=log(x[0]);//计算其余点的坐标for(i=1;i<=n;i++){x[i]=x[0]+i*h;y[i]=log(x[i]);}//拉格朗日法插值求解f_Ln=Ln(x1,n,x,y);//牛顿向前插值法求解f_Nnf=Nnf(x1,n,x,y);//牛顿向后插值法求解f_Nnr=Nnr(x1,n,x,y);//输出结果printf("The appoximate value caculated using Lagrange interpolation mathod is:\n%f\n",f_Ln);printf("The appoximate value caculated using Netown forward interpolation mathod is:\n%f\n",f_Nnf);printf("The appoximate value caculated using Netown backward interpolation mathod is:\n%f\n",f_Nnr);}拉格朗日插值函数:#include <stdio.h>#include <math.h>float Ln(float x1,int n,float x[80],float y[80]){int i,j;float sum=0;float nom=1,denom=1; //nom为基函数的分子,denom为基函数的分母 for(i=0;i<=n;i++){nom=1;denom=1;for(j=0;j<=n;j++)if(i==j) {nom*=1;denom*=1;} //当i=j时,分子分母不乘任何项 else {nom=nom*(x1-x[j]);denom=denom*(x[i]-x[j]);}//否则,分子自乘x-xj,分母自乘xi-xjsum=sum+nom/denom*y[i];//sum自加(x-xj)/(xi-xj)*yj}return sum;}牛顿向前插值函数:#include <stdio.h>#include <math.h>float Nnf(float x1,int n,float x[80],float y[80]){int i,j;float sum=0,t,h;float dif[80][80];float nom=1,denom=1;//nom为分子t(t-1)...(t-n+1)//denom为分母(n+1)!//计算步长hh=(x[n]-x[0])/n;//计算tt=(x1-x[0])/h;//构造向前差分表for(i=0;i<=n;i++)dif[0][i]=y[i];for(i=1;i<=n;i++)for(j=0;j<=n-i;j++)dif[i][j]=dif[i-1][j+1]-dif[i-1][j];sum=y[0];//计算插值公式for(i=1;i<=n;i++){nom=1;denom=1;for(j=1;j<=i;j++){nom*=(t-j+1);denom*=j;}sum+=dif[i][0]*nom/denom;}return sum;}牛顿向后插值函数:#include <stdio.h>#include <math.h>float Nnr(float x1,int n,float x[80],float y[80]) {int i,j;float sum=0,t,h;float dif[80][80];float nom=1,denom=1;//nom为分子t(t+1)...(t+n-1)//denom为分母n!//计算步长h=(x[n]-x[0])/n;//计算tt=(x1-x[n])/h;//构造向后差分表for(i=0;i<=n;i++)dif[0][i]=y[i];for(i=1;i<=n;i++)for(j=n;j>=i;j--)dif[i][j]=dif[i-1][j]-dif[i-1][j-1];sum=y[n];//计算插值公式for(i=1;i<=n;i++){nom=1;denom=1;for(j=1;j<=i;j++){nom*=(t+j-1);denom*=j;}sum+=dif[i][n]*nom/denom;}return sum;}计算结果:Please enter the interpolating point x:1.54Enter the order n:10Enter the start point:1Enter the step size h:0.1The appoximate value caculated using Lagrange interpolation mathod is:0.431782The appoximate value caculated using Netown forward interpolation mathod is: 0.431782The appoximate value caculated using Netown backward interpolation mathod is: 0.431782Press any key to continuePlease enter the interpolating point x:1.98Enter the order n:10Enter the start point:1Enter the step size h:0.1The appoximate value caculated using Lagrange interpolation mathod is:0.683097The appoximate value caculated using Netown forward interpolation mathod is: 0.683097The appoximate value caculated using Netown backward interpolation mathod is: 0.6830972.3计算结果分析:由以上计算结果可以看出采用10个点插值所得出的结果比较理想,误差很小,并且拉格朗日法,牛顿向前插值法和牛顿向后插值法计算的结果差不多。
《数值计算方法》试题与答案
习题一1.设x >0相对误差为2%4x 的相对误差。
解:由自变量的误差对函数值引起误差的公式:(())(())'()()()()f x xf x f x x f x f x δδ∆=≈得(1)()f x =11()()*2%1%22x x δδδ≈===;(2)4()f x x =时444()()'()4()4*2%8%x x x x x xδδδ≈===2.设下面各数都是经过四舍五入得到的近似数,即误差不超过最后一位的半个单位,试指出他们各有几位有效数字。
(1)12.1x =;(2)12.10x =;(3)12.100x =。
解:由教材9P 关于1212.m nx a a a bb b =±型数的有效数字的结论,易得上面三个数的有效数字位数分别为:3,4,53.用十进制四位浮点数计算 (1)31.97+2.456+0.1352; (2)31.97+(2.456+0.1352)哪个较精确?解:(1)31.97+2.456+0.1352 ≈21((0.3197100.245610)0.1352)fl fl ⨯+⨯+ =2(0.3443100.1352)fl ⨯+=0.3457210⨯(2)31.97+(2.456+0.1352)21(0.319710(0.245610))fl fl ≈⨯+⨯ = 21(0.3197100.259110)fl ⨯+⨯ =0.3456210⨯易见31.97+2.456+0.1352=0.345612210⨯,故(2)的计算结果较精确。
4.计算正方形面积时,若要求面积的允许相对误差为1%,测量边长所允许的相对误差限为多少? 解:设该正方形的边长为x ,面积为2()f x x =,由(())(())'()()()()f x xf x f x x f x f x δδ∆=≈解得(())()()'()f x f x x xf x δδ≈=2(())(())22f x x f x x xδδ==0.5%5.下面计算y 的公式哪个算得准确些?为什么?(1)已知1x <<,(A )11121xy x x-=-++,(B )22(12)(1)x y x x =++; (2)已知1x>>,(A )y=,(B )y = (3)已知1x <<,(A )22sin x y x =,(B )1cos2xy x-=;(4)(A)9y =-(B )y =解:当两个同(异)号相近数相减(加)时,相对误差可能很大,会严重丧失有效数字;当两个数相乘(除)时,大因子(小除数)可能使积(商)的绝对值误差增大许多。
数值计算方法习题答案(绪论,习题1,习题2)
引论试题(11页)4 试证:对任给初值x 0,0)a >的牛顿迭代公式112(),0,1,2,......k ak k x x x k +=+= 恒成立下列关系式:2112(1)(,0,1,2,....(2)1,2,......kk k x k x x k x k +-=≥=证明:(1)(2211222k k k k k k k kx a x ax x x x x +-⎫⎛-+=+==⎪ ⎝⎭(2) 取初值00>x ,显然有0>k x ,对任意0≥k ,a a x a x x a x x k k k k k ≥+⎪⎪⎭⎫ ⎝⎛-=⎪⎪⎭⎫ ⎝⎛+=+2121216 证明:若k x 有n 位有效数字,则n k x -⨯≤-110218, 而()kk k k k x x x x x 288821821-=-⎪⎪⎭⎫⎝⎛+=-+ nnk k x x 2122110215.22104185.28--+⨯=⨯⨯<-∴>≥ 1k x +∴必有2n 位有效数字。
8 解:此题的相对误差限通常有两种解法. ①根据本章中所给出的定理:(设x 的近似数*x 可表示为m n a a a x 10......021*⨯±=,如果*x 具有l 位有效数字,则其相对误差限为()11**1021--⨯≤-l a x x x ,其中1a 为*x 中第一个非零数) 则7.21=x ,有两位有效数字,相对误差限为025.010221111=⨯⨯≤--x x e 71.22=x ,有两位有效数字,相对误差限为025.010221122=⨯⨯≤--x x e 3 2.718x =,有两位有效数字,其相对误差限为:00025.010221333=⨯⨯≤--x e x ②第二种方法直接根据相对误差限的定义式求解 对于7.21=x ,0183.01<-e x∴其相对误差限为00678.07.20183.011≈<-x e x 同理对于71.22=x ,有003063.071.20083.022≈<-x e x 对于718.23=x ,有00012.0718.20003.033≈<-x e x备注:(1)两种方法均可得出相对误差限,但第一种是对于所有具有n 位有效数字的近似数都成立的正确结论,故他对误差限的估计偏大,但计算略简单些;而第二种方法给出较好的误差限估计,但计算稍复杂。
数值计算方法实习作业模板小
2.1函数图形与极限2.1.1 实验目的1.熟悉Mathematica 基本绘图语句。
2.掌握函数极限的有关操作命令。
3.学会利用Mathematica 软件对函数进行分析研究。
4.熟悉Mathematica 二元函数绘图语句。
2.1.2 实验内容【基本语句】1.Plot[f[x],{x,xmin,xmax},选项]; 功能: 画出函数f[x] 从min 到max 间的图形;2.Plot[{f1[x],f2[x],...},{x,xmin,xmax},选项]; 功能: 在同一坐标系下画出函数f1,f2,...的图形。
3. ParametricPlot[{fx,fy},{t,tmin,tmax}]; 功能: 画出参数方程fx=x(t),fy=y(t)的图形;ParametricPlot[{{f1x,f1y},{f2x,f2y}},{t,tmin,tmax}]; 功能:在同一坐标系下画出用参数方程表示的两幅函数图形。
【备注】fx,fy 的给出方式:⑴fx=x(t) , fy=y(t)⑵fx=x ,fy=f(x)与fx=f(x) ,fy=x 构成反函数的图形关系⑶r=r(t) , fx=r(t)Cos(t) , fy=r(t)Sin(t)4. Show[tu1,tu2]功能:将tu1及tu2两幅函数图形重叠在一起,将两个函数图形一起显示。
5. Plot3D[f[x,y],{x,x0,x1},{y,y0,y1}] 功能:作出函数f[x,y]在区域[x0,x1]×[y0,y1]上的图形; ParametricPlot3D[{x[u,v],y[u,v],z[u,v]},{u,u0,u1},{v,v0,v1}] 功能:作出参数方程表示的曲面。
6. Limit[f[x],x->x0] 功能:求函数f[x]在x0处的极限。
7. Limit[f[x],x->x0,Direction->+1] 功能:求函数f[x]在x0处的左极限。
数值计算方法计算习题
1.已知ln(2.0)=0.6931;ln(2.2)=0.7885,ln(2.3)=0.8329, 试用线性插值和抛物插值计算.ln2.1的值并估计误差(牛顿插值和拉格朗日插值)2.已知函数y=sinx 的数表如下,分别用前插和后插公式计算sin0.57891的值,并估算误差。
i x0.4 0.5 0.6 0.7 )(i x f0.389420.479430.564640.644223. 已知i x-2 -1 0 1 2 )(i x f42135求)(x f 的二次拟合曲线)(2x p ,并求)0(f '的近似值。
4. 数值积分公式形如⎰'+'++=≈1)1()0()1()0()()(f D f C Bf Af x S dx x xf 试确定参数D C B A ,,,使公式代数精度尽量高;(2)设]1,0[)(4C x f ∈,推导余项公式⎰-=1)()()(x S dx x xf x R ,并估计误差。
5. 已知数值积分公式为:)]()0([)]()0([2)(''20h f f h h f f hdx x f h-++≈⎰λ,试确定积分公式中的参数λ,使其代数精确度尽量高,并指出其代数精确度的次数。
6. 用复化Simpson 公式计算积分()⎰=10sin dx x x I 的近似值,要求误差限为5105.0-⨯。
7. 已知012113,,424x x x ===,给出以这3个点为求积节点在[]0.1上的插值型求积公式。
8. 给出 900,cos ≤≤x x 的函数表,步长)60/1(1='=h ,若函数具有5位有效数字,研究用线性插值求x cos 近似值时的总误差界。
9. 求一个次数不高于4次的多项式)(x P ,使它满足0)0()0(='=P P ,1)1()1(='=P P ,1)2(=P 。
10. 单原子波函数的形式为bxae y -=,试按照最小二乘法决定参数a 和b ,已知数据如下:X 0 1 2 4 y2.010 1.210 0.740 0.45011. 分别用梯形公式和辛普森公式计算下列积分:⎰+1024dx x x。
数值计算方法习题答案(习题3-习题6)
习题三 2 解:()()2112230.2()10.210.80.80.20.80.20.80.61440.4613n n n n n y y y x y y y y +=+--=+⨯-==+⨯--⨯==同理,7. 解:()()()22212111,0.1(2)11,0.1(2)112pn n n n n nc n n n n p n n p c y y hf x y y y x y y hf x y y y x y y y +++⎧=+=+⨯-⎪+⎪⎪=+=+⨯-⎨+⎪⎪=+⎪⎩111230.1,0.097,0.09850.1913,0.2737p c y y y y y =====同理,11. 解:()112341213243123412340.2226833830.223830.228330.21, 1.4, 1.58, 1.05,(0.2) 2.30041.0986,0.7692,0.8681,0.5780,(0.4)2.4654n n nn n n y y k k k k k y k y k k y k k y k k k k k y k k k k y +⎧=+⨯+++⎪⎪=-⎪⎪⎪=--⨯⨯⎨⎪⎪=--⨯⨯⎪⎪=--⨯⨯⎪⎩==========同理,13. 解:()()[]()[]()110.220.22321,00,(0.2)0.181(0.4)(0.2)3(0.2)10.1810.1310.18110.3267(0.6)(0.4)3(0.4)(0.2)0.32670.1310.3267(10.181)0.4468n n nn hy y y y y y y y y y y y y y y +-''=+-'=-=='=+-=+⨯⨯--=⎡⎤⎣⎦''=+-=+⨯⨯---=⎡⎤⎣⎦(0.8)0.5454,(1)0.6265y y ==同理,习题四),(,121)('sin 21)('cos 21)(.2∞-∞∈<≤-==x x xx x x ϕϕϕ证明:迭代函数所以在均收敛。
数值计算方法答案
数值计算方法习题一(2)习题二(6)习题三(15)习题四(29)习题五(37)习题六(62)习题七(70)2009.9,9习题一1.设x >0相对误差为2%4x 的相对误差。
解:由自变量的误差对函数值引起误差的公式:(())(())'()()()()f x xf x f x x f x f x δδ∆=≈得(1)()f x =11()()*2%1%22x x δδδ≈===;(2)4()f x x =时444()()'()4()4*2%8%x x x x x xδδδ≈===2.设下面各数都是经过四舍五入得到的近似数,即误差不超过最后一位的半个单位,试指出他们各有几位有效数字。
(1)12.1x =;(2)12.10x =;(3)12.100x =。
解:由教材9P 关于1212.m nx a a a bb b =±型数的有效数字的结论,易得上面三个数的有效数字位数分别为:3,4,53.用十进制四位浮点数计算 (1)++; (2)+(+)哪个较精确 解:(1)++ ≈21((0.3197100.245610)0.1352)fl fl ⨯+⨯+=2(0.3443100.1352)fl ⨯+=210⨯(2)+(+)21(0.319710(0.245610))fl fl ≈⨯+⨯ = 21(0.3197100.259110)fl ⨯+⨯ =210⨯易见++=210⨯,故(2)的计算结果较精确。
4.计算正方形面积时,若要求面积的允许相对误差为1%,测量边长所允许的相对误差限为多少解:设该正方形的边长为x ,面积为2()f x x =,由(())(())'()()()()f x xf x f x x f x f x δδ∆=≈解得(())()()'()f x f x x xf x δδ≈=2(())(())22f x x f x x xδδ==%5.下面计算y 的公式哪个算得准确些为什么(1)已知1x <<,(A )11121xy x x-=-++,(B )22(12)(1)x y x x =++; (2)已知1x>>,(A )y=,(B )y = (3)已知1x <<,(A )22sin x y x =,(B )1cos2xy x-=;(4)(A)9y =-(B )y =解:当两个同(异)号相近数相减(加)时,相对误差可能很大,会严重丧失有效数字;当两个数相乘(除)时,大因子(小除数)可能使积(商)的绝对值误差增大许多。
数值计算方法上机实习题答案.doc
1.设I n 1 x ndx ,0 5 x( 1)由递推公式 I n 5I n 11,从 I 0的几个近似值出发,计算I 20;n解:易得: I 0 ln6-ln5=0.1823, 程序为:I=0.182;for n=1:20I=(-5)*I+1/n;endI输出结果为: I 20= -3.0666e+010( 2)粗糙估计 I 20,用 I n 1 1I n 1 1 ,计算 I 0;5 5n0.0079 1 x 20 1 x 200.0095因为dx I 20dx 6 5所以取 I 20 1(0.0079 0.0095) 0.0087 2程序为: I=0.0087;for n=1:20I=(-1/5)*I+1/(5*n);endII 0= 0.0083( 3)分析结果的可靠性及产生此现象的原因(重点分析原因 )。
首先分析两种递推式的误差;设第一递推式中开始时的误差为E0 I 0 I 0,递推过程的舍入误差不计。
并记 E n I n I n,则有 E n 5E n 1 ( 5) n E0。
因为 E20( 5) 20 E0 I 20,所此递推式不可靠。
而在第二种递推式中E0 1E1 (1)n E n,误差在缩小,5 5所以此递推式是可靠的。
出现以上运行结果的主要原因是在构造递推式过程中,考虑误差是否得到控制,即算法是否数值稳定。
2.求方程e x10x 2 0 的近似根,要求x k 1x k 5 10 4,并比较计算量。
(1)在 [0, 1]上用二分法;程序: a=0;b=1.0;while abs(b-a)>5*1e-4c=(b+a)/2;if exp(c)+10*c-2>0b=c;else a=c;endendc结果: c =0.0903( 2)取初值x0 0,并用迭代 x k 1 2 e x ;10程序: x=0;a=1;while abs(x-a)>5*1e-4a=x;x=(2-exp(x))/10;endx结果: x =0.0905(3)加速迭代的结果;程序: x=0;a=0;b=1;while abs(b-a)>5*1e-4a=x;y=exp(x)+10*x-2;z=exp(y)+10*y-2;x=x-(y-x)^2/(z-2*y+x);b=x;endx结果: x =0.0995( 4)取初值x00 ,并用牛顿迭代法;程序: x=0;a=0;b=1;while abs(b-a)>5*1e-4a=x;x=x-(exp(x)+10*x-2)/(exp(x)+10); b=x;end x 结果: x =0.0905( 5) 分析绝对误差。
数值计算方法第1章作业
第一章作业第一题问题叙述:构造算法并编程序精确计算二次方程的根。
●设a≠0,b2-4ac>0,且有方程ax2+bx+c=0●包括b2≈b2-4ac的情况(a=c=1,b=±1000000.000001)问题分析:对于普通的二次求根公式:x1,2=−b±√b2−4ac2a当b2>>4ac时,分子可能非常小。
由于计算机中的算术运算存在减性抵消的现象,即两个几乎相等的浮点数相减时会引起舍入误差,所以在这种极端条件下用这个公式就会带来很大的误差。
解决方法:1.使用双精度2.使用变换公式x1,2=−2cb±√b2−4ac3.先利用原公式计算较大的根(即分子不会引起减性抵消),再利用公式:x1x2=c a计算较小的根。
问题解决:1.使用双精度:%This program uses double precision to solve the equation of two degree%And make a comparision to the single precisionclear;clc;[a,b,c]=textread('data.txt','%n%n%n'); %read the numbers from data.txtdelta=b*b-4*a*c;x1=(-b+sqrt(delta))/(2*a);x2=(-b-sqrt(delta))/(2*a); %double precisiona=single(a);b=single(b);c=single(c);%use single precisiondelta=single(b*b-4*a*c);x11=single((-b+sqrt(delta))/(2*a));x12=single((-b-sqrt(delta))/(2*a));fid=fopen('out.txt','w');fprintf(fid,'%g %g %g %g',[x1 x2 x11 x12]);fclose(fid);%write the result into the out.txt下面是计算结果:结论:1.在一般情况下,即没有出现b2≈b2−4ac时,无论是单精度还是双精度下均可以得出正确答案。
天大18秋《数值计算方法》在线作业一
(单选题) 1: 若方阵A的谱半径小于1,则解方程组Ax=b的Jacobi迭代法收敛A: 正确B: 错误正确答案:(单选题) 2: 3.142和3.141分别为π的近似数具有()和()位有效数字A: 4和3B: 3和2C: 3和4D: 4和4正确答案:(单选题) 3: 若f(a)f(b)<0,则f(x)=0在(a,b)内一定有根A: 正确B: 错误正确答案:(单选题) 4: 二分法的基本思想就是逐步对分区间通过判断两端点函数值乘积的符号,进一步缩小有根区间A: 正确B: 错误正确答案:(单选题) 5: 方程求根的二分法的局限性是收敛速度慢,不能求偶重根A: 正确B: 错误正确答案:(单选题) 6:A: AB: BC: CD: D正确答案:(单选题) 7: 设Ax=b,准确解为X*,某一近似解为X,用()来判断误差A: ||AX-b||B: ||X-X*||C: bD: ||b-AX||正确答案:(单选题) 8: 若线性方程组Ax=b的系数矩阵A为严格对角占优矩阵,则解方程组的Jacobi迭代法和Gauss-Seidel迭代法()A: 都收敛B: 都发散C: Jacobi迭代法收敛,Gauss-Seidel迭代法发散D: Jacobi迭代法发散,Gauss-Seidel迭代法收敛正确答案:(单选题) 9: 下列说法不正确的是()A: 二分法不能用于求函数f(x)=0的复根B: 方程求根的迭代解法的迭代函数为?f(x),则迭代收敛的充分条件是?f(x)<1C: 用高斯消元法求解线性方程组AX=B时,在没有舍入误差的情况下得到的都是精确解D: 如果插值节点相同,在满足插值条件下用不同方法建立的插值公式是等价的正确答案:(单选题) 10: f(x)=x^2+1,则f[1,2,3,4]=()A: 4B: 3(单选题) 11: 若误差限为0.5×10^(-5),那么近似数0.003400有5位有效数字A: 正确B: 错误正确答案:(单选题) 12: 设求方程f(x)=0的根的牛顿法收敛,则它具有()收敛A: 超线性B: 平方C: 线性D: 三次正确答案:(单选题) 13: 已知多项式P(x),过点(0,0)(2,8)(4,64)(11,1331)(15,3375),它的三阶差商为常数1,一阶二阶差商均不是0,那么P(x)是()A: 二次多项式B: 不超过二次的多项式C: 三次多项式D: 四次多项式正确答案:(单选题) 14: 下列说法错误的是()A: 如果一个近似数的每一位都是有效数字,则称该近似数为有效数B: 凡是经“四舍五入”得到的近似数都是有效数C: 数值方法的稳定性是指初始数据的扰动对计算结果的影响D: 病态问题是由数学问题本身的性质决定的,与数值方法有关正确答案:(单选题) 15: 设f(1)=1,f(2)=2,f(3)=0,用三点式求f'(1)=()A: 1B: 1.5C: 2D: 2.5正确答案:(单选题) 16: 最小二乘原理是使误差的平方和达到最小A: 正确B: 错误正确答案:(单选题) 17: 用1+x近似表示e^x所产生的误差是()A: 模型误差B: 观测误差C: 截断误差D: 舍入误差正确答案:(单选题) 18: 如果插值结点相同,在满足相同插值条件下所有的插值多项式是等价的。
数值计算方法大作业
目录第一章非线性方程求根 (3)1.1迭代法 (3)1.2牛顿法 (4)1.3弦截法 (5)1.4二分法 (6)第二章插值 (7)2.1线性插值 (7)2.2二次插值 (8)2.3拉格朗日插值 (9)2.4分段线性插值 (10)2.5分段二次插值 (11)第三章数值积分 (13)3.1复化矩形积分法 (13)3.2复化梯形积分法 (14)3.3辛普森积分法 (15)3.4变步长梯形积分法 (16)第四章线性方程组数值法 (17)4.1约当消去法 (17)4.2高斯消去法 (18)4.3三角分解法 (20)4.4雅可比迭代法 (21)4.5高斯—赛德尔迭代法 (23)第五章常积分方程数值法 (25)5.1显示欧拉公式法 (25)5.2欧拉公式预测校正法 (26)5.3改进欧拉公式法 (27)5.4四阶龙格—库塔法 (28)数值计算方法第一章非线性方程求根1.1迭代法程序代码:Private Sub Command1_Click()x0 = Val(InputBox("请输入初始值x0"))ep = Val(InputBox(请输入误差限ep))f = 0While f = 0X1 = (Exp(2 * x0) - x0) / 5If Abs(X1 - x0) < ep ThenPrint X1f = 1Elsex0 = X1End IfWendEnd Sub例:求f(x)=e2x-6x=0在x=0.5附近的根(ep=10-10)1.2牛顿法程序代码:Private Sub Command1_Click()b = Val(InputBox("请输入被开方数x0"))ep = Val(InputBox(请输入误差限ep))f = 0While f = 0X1 = x0 - (x0 ^ 2 - b) / (2 * b)If Abs(X1 - x0) < ep ThenPrint X1f = 1Elsex0 = X1End IfWendEnd Sub例:求56的值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录1非线性方程求根 (1)1.1迭代法 (1)1.2牛顿法 (1)1.3弦截法 (2)1.4二分法 (3)2插值 (4)2.1线性插值 (4)2.2二次插值 (5)2.3拉格朗日插值 (6)2.4分段线性插值 (7)2.5分段二次插值 (8)3数值积分 (10)3.1复化矩形积分法 (10)3.2 复化梯形积分法 (10)3.3 复化辛甫生积分法 (11)3.4 变步长梯形积分法 (12)4线性方程组数值解法 (13)4.1约当消去法 (13)4.2高斯消去法 (14)4.3 三角分解法 (15)4.4 雅克比迭代法 (17)4.5高斯-塞德尔迭代法 (19)5常微分方程数值解 (20)5.1 显式欧拉公式 (20)5.2 欧拉公式预测校正系统 (21)5.3 两步欧拉公式 (22)5.4 改进欧拉公式 (23)5.5 四阶龙格-库塔法 (24)1非线性方程求根1.1迭代法1.1.1程序代码Private Sub Command1_Click()x0 = Val(InputBox("请输入初始值X0:"))ep = Val(InputBox("请输入误差限EP:"))s = 0While s = 0x = 2 * Sin(x0)If Abs(x - x0) < ep ThenPrint "x=", xs = 1Elsex0 = xEnd IfWendEnd Sub1.1.2 算例求方程2sin(x)-x=0的根,误差限为0.00011.1.3运行结果1.2牛顿法1.2.1程序代码Private Sub Command1_Click()x0 = Val(InputBox("请输入初始值X0:"))ep = Val(InputBox("请输入误差限EP:"))S = 0While S = 0X1 = x0 - (x0 ^ 2 * Exp(x0) - 8 * x0) / (x0 ^ 2 * Exp(x0) + 2 * x0 * Exp(x0) - 8) If Abs(X1 - x0) < ep ThenPrint "非线性方程的根X="; X1S = 1Elsex0 = X1End IfWendEnd Sub1.2.2算例求方程的最小正根,误差限为0.0001 1.2.3运行结果1.3弦截法1.3.1程序代码Private Sub Command1_Click()Dim x0, x1, n, ep, y0, y1x0 = Val(InputBox("请输入区间左端点:"))x1 = Val(InputBox("请输入区间右端点:"))n = Val(InputBox("最大迭代数n:"))ep = Val(InputBox("请输入误差限:"))s = 0f = 0While f = 0y0 = x0 ^ 3 - 3 * x0 ^ 2 + 2 * x0 - 18y1 = x1 ^ 3 - 3 * x1 ^ 2 + 2 * x0 - 18x = x1 - y1 * (x1 - x0) / (y1 - y0)If Abs(x - x1) < ep ThenPrint "x="; xf = 1Elses = s + 1If s > n ThenPrint "计算失败"f = 1Elsex0 = x1x1 = xEnd IfEnd IfWendEnd Sub1.3.2 算例求x³-3x²+2x-18=0在[3,5]的根,最大迭代数1000,误差限为0.0001 1.3.3运行结果1.4二分法1.4.1程序代码Private Sub Command1_Click()a = Val(InputBox("请输入区间左端点a:"))b = Val(InputBox("请输入区间右端点b:"))ep = Val(InputBox("请输入误差限EP:"))s = 0While s = 0x = (a + b) / 2fx = x ^ 3 - 2 * x ^ 2 + 3 * x - 12fa = a ^ 3 - 2 * a ^ 2 + 3 * a - 12If fx = 0 ThenPrint "x=", xs = 1ElseIf fx * fa > 0 Thena = xElseb = xEnd IfIf Abs(b - a) < ep Thenx = (a + b) / 2Print "x="; xs = 1ElseEnd IfEnd IfWendEnd Sub1.4.2 算例求x³-2x²+3x-12=0在[1,3]的根,误差限为0.0001 1.4.3 运行结果2插值2.1线性插值2.1.1 程序代码Private Sub Command1_Click()X0 = Val(InputBox("请输入插值结点X0:"))y0 = Val(InputBox("请输入插值结点Y0:"))X1 = Val(InputBox("请输入插值结点X1:"))Y1 = Val(InputBox("请输入插值结点Y1:"))f = 0While f = 0x = Val(InputBox("请输入插值点X:"))L0 = (x - X1) / (X0 - X1)L1 = (x - X0) / (X1 - X0)y = L0 * y0 + L1 * Y1Print "x="; x, "y="; yf = InputBox("是否继续(0/1)?")WendEnd Sub2.1.2算例已知(16,5)、(36,7),求18处的值2.1.3 运行结果2.2二次插值2.2.1 程序代码Private Sub Command1_Click()X0 = Val(InputBox("请输入插值结点X0:"))y0 = Val(InputBox("请输入插值结点Y0:"))X1 = Val(InputBox("请输入插值结点X1:"))Y1 = Val(InputBox("请输入插值结点Y1:"))X2 = Val(InputBox("请输入插值结点X2:"))Y2 = Val(InputBox("请输入插值结点Y2:"))f = 0While f = 0x = Val(InputBox("请输入插值点X:"))L0 = (x - X1) * (x - X2) / ((X0 - X1) * (X0 - X2))L1 = (x - X0) * (x - X2) / ((X1 - X0) * (X1 - X2))L2 = (x - X0) * (x - X1) / ((X2 - X0) * (X2 - X1))y = L0 * y0 + L1 * Y1 + L2 * Y2Print "x="; x, "y="; yf = InputBox("是否继续(0/1)?")WendEnd Sub2.2.2 算例已知(27,4)、(125,6)、(343,8),求50处的值2.2.3 运行结果2.3拉格朗日插值2.3.1 程序代码Private Sub Command1_Click()Dim x(), y()n = Val(InputBox("请输入插值结点数N:"))ReDim x(n), y(n)For i = 0 To nx(i) = Val(InputBox("请输入插值结点X(" + Str(i) + "):"))y(i) = Val(InputBox("请输入插值结点Y(" + Str(i) + "):"))Next if = 0While f = 0xx = Val(InputBox("请输入插值点X:"))Sum = 0For i = 0 To nT = 1For j = 0 To nIf i <> j ThenT = T * (xx - x(j)) / (x(i) - x(j))ElseEnd IfNext jSum = Sum + T * y(i)Next iPrint "x="; xx, "y="; Sumf = InputBox("是否继续(0/1)?")WendEnd Sub2.3.2 算例已知(27,4)(64,5)(125,6)(216,7)(512,9),N=4,求150处的值2.3.3 运行结果2.4分段线性插值2.4.1 程序代码Private Sub Command1_Click()Dim x(), y()n = Val(InputBox("请输入插值结点数N:"))ReDim x(n), y(n)For i = 0 To nx(i) = Val(InputBox("请输入插值结点X(" + Str(i) + "):"))y(i) = Val(InputBox("请输入插值结点Y(" + Str(i) + "):"))Next if = 0While f = 0xx = Val(InputBox("请输入插值点X:"))i = 1a = 0While a = 0If xx < x(i) Thenk = i - 1a = 1Elsei = i + 1If i > n - 1 Thenk = n - 1a = 1ElseEnd IfEnd IfWendL0 = (xx - x(k + 1)) / (x(k) - x(k + 1))L1 = (xx - x(k)) / (x(k + 1) - x(k))YY = L0 * y(k) + L1 * y(k + 1)Print "x="; xx, "y="; YYf = InputBox("是否继续(0/1)?")WendEnd Sub2.4.2 算例已知(256,16)(289,17)(324,18)(361,19),N=3,求315处的值2.4.3 运行结果2.5分段二次插值2.5.1 程序代码Private Sub Command1_Click()Dim x(), y()n = Val(InputBox("请输入插值结点数N;"))ReDim x(n), y(n)For i = 0 To nx(i) = Val(InputBox("请输入插值结点X(" + Str(i) + "):"))y(i) = Val(InputBox("请输入插值结点Y(" + Str(i) + "):"))Next if = 0While f = 0xx = Val(InputBox("请输入插值点X:"))If xx < x(1) Thenk = 1Elsei = 2s = 0While s = 0If xx < x(i) ThenIf xx - x(i - 1) < x(i) - xx Thenk = i - 1s = 1Elsek = is = 1End IfElsei = i + 1If i > n - 1 Thenk = n - 1s = 1ElseEnd IfEnd IfWendEnd IfL0 = (xx - x(k)) * (xx - x(k + 1)) / ((x(k - 1) - x(k)) * (x(k - 1) - x(k + 1)))L1 = (xx - x(k - 1)) * (xx - x(k + 1)) / ((x(k) - x(k - 1)) * (x(k) - x(k + 1)))L2 = (xx - x(k - 1)) * (xx - x(k)) / ((x(k + 1) - x(k - 1)) * (x(k + 1) - x(k)))yy = L0 * y(k - 1) + L1 * y(k) + L2 * y(k + 1)Print "x="; xx, "y="; yyf = InputBox("是否继续(0/1)?")WendEnd Sub2.5.2 算例已知(196,14)、(169,13)、(144,12)、(121,11),N=3,求150处的值2.5.3 运行结果3数值积分3.1复化矩形积分法3.1.1 程序代码Private Sub Command1_Click()a = Val(InputBox("请输入积分下限A:"))b = Val(InputBox("请输入积分上限B:"))n = Val(InputBox("请输入积分区间等分数N:"))h = (b - a) / nSum = 0For i = 1 To nSum =Sum + (2 *(a + (i - 1 / 2) * h)) / ((a + (i - 1 / 2) * h) ^ 2 + 1)Next iR = h * SumPrint "复化矩形积分法计算结果R"; REnd Sub3.1.2 算例计算等分10003.1.3 运行结果3.2 复化梯形积分法3.2.1 程序代码Private Sub Command1_Click()a = Val(InputBox("请输入积分下限A:"))b = Val(InputBox("请输入积分上限B:"))n = Val(InputBox("请输入积分区间等分数N:"))h = (b - a) / nSum = 0For i = 1 To n - 1Sum = Sum + (a + i * h) ^ 2 / ((a + i * h) ^ 2 + 1))Next iT = h * (a ^ 2 / (a ^ 2 + 1) + b ^ 2 / (b ^ 2 + 1)) / 2 + h * SumPrint "复化梯形积分法计算结果T:"; TEnd Sub3.2.2 算例计算等分10003.2.3 运行结果3.3 复化辛甫生积分法3.3.1 程序代码Private Sub Command1_Click()a = Val(InputBox("请输入积分下限A:"))b = Val(InputBox("请输入积分上限B:"))n = Val(InputBox("请输入积分区间等分数N:"))h = (b - a) / nSum = 0For i = 1 To nSum = Sum + (a + (i - 1) * h) ^ 4 + 4 * (a + (i - 1 / 2) * h) ^ 4 + (a + i * h) ^ 4 Next iS = h * Sum / 6Print "辛普生积分法计算结果S:"; SEnd Sub3.3.2 算例计算dx 等分1003.3.3 运行结果3.4 变步长梯形积分法3.4.1 程序代码Private Sub Command1_Click()a= Val(InputBox("请输入积分下限A:"))b = Val(InputBox("请输入积分上限B:"))ep = Val(InputBox("请输入误差限EP:"))n = 1h = b - aT1 = h * (2 * a / (a ^ 3 + 1) + 2 * b / (b ^ 3 + 1)) / 2f = 0While f = 0Sum = 0For i = 1 To nSum = Sum +2 * (a + (i - 1 / 2) * h) / ((a + (i - 1 / 2) * h) ^ 3 + 1)Next iT2 = T1 / 2 + h * Sum / 2If Abs(T2 - T1) < ep ThenPrint "变步长梯形积分法计算结果T:"; T2f = 1ElseT1 = T2h = h / 2n = 2 * nEnd IfWendEnd Sub3.4.2 算例计算误差限ep=0.00013.4.3 运行结果4线性方程组数值解法4.1约当消去法4.1.1 程序代码Private Sub Command1_Click()Dim a()n = Val(InputBox("请输入方程个数N:"))ReDim a(n, n + 1)For i = 1 To nFor j = 1 To n + 1a(i, j) = Val(InputBox("请输入增广矩阵A(" + Str(i) + "," + Str(j) + "):"))Next jNext iFor k = 1 To nm = a(k, k)For j = k To n + 1a(k, j) = a(k, j) / mNext jFor i = 1 To nIf i <> k Thenm = a(i, k)For j = k To n + 1a(i, j) = a(i, j) - a(k, j) * mNext jEnd IfNext iNext kFor i = 1 To nPrint "x(" + Str(i) + ")="; a(i, n + 1)Next iEnd Sub4.1.2 算例计算方程组4.1.3 运行结果4.2高斯消去法4.2.1 程序代码Private Sub Command1_Click()Dim a(), x()n = Val(InputBox("请输入方程个数N:"))ReDim a(n, n + 1), x(n)For i = 1 To nFor j = 1 To n + 1a(i, j) = Val(InputBox("请输入増广矩阵A(" + Str(i) + "," + Str(j) + "):")) Next jNext iFor k = 1 To n - 1m = a(k, k)For j = k To n + 1a(k, j) = a(k, j) / mNext jFor i = k + 1 To nm = a(i, k)For j = k To n + 1a(i, j) = a(i, j) - a(k, j) * mNext jNext iNext kx(n) = a(n, n + 1) / a(n, n)For i = n - 1 To 1 Step -1Sum = 0For j = i + 1 To nSum = Sum + a(i, j) * x(j)Next jx(i) = a(i, n + 1) - SumNext iFor i = 1 To nPrint "x(" + Str(i) + ")="; x(i)Next iEnd Sub4.2.2 算例计算方程组4.2.3 运行结果4.3 三角分解法4.3.1 程序代码Private Sub Command1_Click()Dim a(), b(), L(), U(), x(), Y()n = Val(InputBox("请输入方程个数N:"))ReDim a(n, n), L(n, n), U(n, n), b(n), x(n), Y(n)For i = 1 To nFor j = 1 To na(i, j) = Val(InputBox("请输入系数矩阵A(" + Str(i) + "," + Str(j) + "):"))Next jb(i) = Val(InputBox("请输入右端常数项B(" + Str(i) + "):"))Next iFor i = 1 To nFor j = 1 To nIf i > j ThenSum = 0For k = 1 To j - 1Sum = Sum + L(i, k) * U(k, j) Next kL(i, j) = (a(i, j) - Sum) / U(j, j) ElseSum = 0For k = 1 To i - 1Sum = Sum + L(i, k) * U(k, j) Next kU(i, j) = a(i, j) - SumEnd IfNext jNext iFor i = 1 To nSum = 0For j = 1 To i - 1Sum = Sum + L(i, j) * Y(j) Next jY(i) = b(i) - SumNext iFor i = n To 1 Step -1Sum = 0For j = i + 1 To nSum = Sum + U(i, j) * x(j) Next jx(i) = (Y(i) - Sum) / U(i, i) Next iFor i = 1 To nPrint "x(" + Str(i) + ")="; x(i)Next iEnd Sub4.3.2 算例计算方程组4.3.3 运行结果4.4 雅克比迭代法4.4.1 程序代码Private Sub Command1_Click()Dim a(), b(), x(), x0()n = Val(InputBox("方程个数N:"))ReDim a(n, n), x(n), x0(n), b(n)Nmax = Val(InputBox("请输入最大迭代次数Nmax:"))ep = Val(InputBox("请输入误差限EP:"))For i = 1 To nFor j = 1 To na(i, j) = Val(InputBox("请输入系数矩阵A(" + Str(i) + "," + Str(j) + "):"))Next jb(i) = Val(InputBox("请输入右端常数项B(" + Str(i) + "):"))Next iFor i = 1 To nx0(i) = Val(InputBox("请输入初始值X0(" + Str(i) + "):"))Next iFor i = 1 To nFor j = 1 To nPrint a(i, j);Next jPrint b(i)Next im = 0f = 0While f = 0Max = 0For i = 1 To nSum = 0For j = 1 To nSum = Sum + a(i, j) * x0(j) Next jd = (b(i) - Sum) / a(i, i)If Abs(d) > Max ThenMax = Abs(d)ElseEnd Ifx(i) = x0(i) + dNext im = m + 1If Max < ep ThenFor i = 1 To nPrint "x(" + Str(i) + ")="; x(i) Next if = 1ElseIf m > Nmax ThenPrint "迭代失败"f = 1ElseFor i = 1 To nx0(i) = x(i)Next iEnd IfEnd IfWendEnd Sub4.4.2 算例计算方程组ep=0.0001,最大迭数1000,初始值均为0 4.4.3 运行结果4.5高斯-塞德尔迭代法4.5.1 程序代码Private Sub Command1_Click()Dim a(), b(), x()n = Val(InputBox("请输入方程个数N:"))ReDim a(n, n), b(n), x(n)ep = 0.000001Nmax = 100000For i = 1 To nFor j = 1 To na(i, j) = Val(InputBox("请输入系数矩阵A(" + Str(i) + "," + Str(j) + "):"))Next jb(i) = Val(InputBox("请输入右端常数项B(" + Str(i) + "):"))Next iFor i = 1 To nx(i) = Val(InputBox("请输入初始值X(" + Str(i) + "):"))Next im = 0f = 0While f = 0Max = 0For i = 1 To nSum = 0For j = 1 To nSum = Sum + a(i, j) * x(j)Next jd = (b(i) - Sum) / a(i, i)If Abs(d) > Max ThenMax = Abs(d)End Ifx(i) = x(i) + dNext im = m + 1If Max < ep ThenFor i = 1 To nPrint "x(" + Str(i) + ")="; x(i)Next if = 1ElseIf m > Nmax ThenPrint "迭代失败"f = 1End IfEnd IfWendEnd Sub4.5.2 算例计算方程组初始值均为0 4.5.3 运行结果5常微分方程数值解5.1 显式欧拉公式5.1.1 程序代码Private Sub Command1_Click()x0 = Val(InputBox("请输入定义域左端点X0:"))xn = Val(InputBox("请输入定义域右端点Xn:"))y0 = Val(InputBox("请输入初始条件Y0:"))n = Val(InputBox("请输入区间等分数N:"))h = (xn - x0) / nX1 = x0 + hWhile X1 <= xnY1 = y0 + h * (1 + (y0 - x0) ^ 4)Print "x="; X1, "y="; Y1x0 = X1y0 = Y1X1 = x0 + hWendEnd Sub5.1.2 算例用显式欧拉法计算(0≤x≤1),区间等分数N=4 5.1.3 运行结果5.2 欧拉公式预测校正系统5.2.1 程序代码Private Sub Command1_Click()x0 = Val(InputBox("请输入定义域左端点X0:"))xn = Val(InputBox("请输入定义域右端点Xn:"))y0 = Val(InputBox("请输入初始条件Y0:"))n = Val(InputBox("请输入区间等分数N:"))h = (xn - x0) / nX1 = x0 + hWhile X1 <= xnyp = y0 + h * (1 + (y0 - x0) ^ 4)Y1 = y0 + h * (1 + (yp - X1) ^4)Print "x="; X1, "y="; Y1x0 = X1y0 = Y1X1 = x0 + hWendEnd Sub5.2.2 算例用欧拉公式预测校正系统法计算(0≤x≤1)区间等分数N=4 5.2.3 运行结果5.3 两步欧拉公式5.3.1 程序代码Private Sub Command1_Click()x0 = Val(InputBox("请输入定义域左端点X0:"))xn = Val(InputBox("请输入定义域右端点Xn:"))y0 = Val(InputBox("请输入初始条件Y0:"))n = Val(InputBox("请输入区间等分数N:"))h = (xn - x0) / nX1 = x0 + hY1 = y0 + h * (1 + (y0 - x0) ^4)Print "x="; X1, "y="; Y1X2 = X1 + hWhile X2 <= xnY2 = y0 + 2 * h * (1 + (Y1 - X1) ^ 4)Print "x="; X2, "y="; Y2x0 = X1y0 = Y1X1 = X2Y1 = Y2X2 = X1 + hWendEnd Sub5.3.2 算例用两步欧拉公式计算(0≤x≤1)区间等分数N=4 5.3.3 运行结果5.4 改进欧拉公式5.4.1 程序代码Private Sub Command1_Click()x0 = Val(InputBox("请输入定义域左端点X0:"))xn = Val(InputBox("请输入定义域右端点Xn:"))y0 = Val(InputBox("请输入初始条件Y0:"))n = Val(InputBox("请输入区间等分数N:"))h = (xn - x0) / nX1 = x0 + hWhile X1 <= xnYp = y0 + h * (1 + (y0 - x0) ^ 4)Yc = y0 + h * (1 + (Yp - X1) ^ 4)Y1 = (Yp + Yc) / 2Print "x="; X1, "y="; Y1x0 = X1y0 = Y1X1 = x0 + hWendEnd Sub5.4.2 算例用改进欧拉公式计算(0≤x≤1)区间等分数N=4 5.4.3 运行结果5.5 四阶龙格-库塔法5.5.1 程序代码Private Sub Command1_Click()x0 = Val(InputBox("请输入定义域左端点X0:"))xn = Val(InputBox("请输入定义域右端点Xn:"))y0 = Val(InputBox("请输入初始条件Y0:"))n = Val(InputBox("请输入区间等分数N:"))h = (xn - x0) / nX1 = x0 + hWhile X1 <= xnK1 = 1 + (y0 + x0) ^4K2 = 1 + ((y0 + h / 2 * K1) - (x0 + h / 2)) ^ 4K3 = 1 + ((y0 + h / 2 * K2) - (x0 + h / 2)) ^ 4K4 = 1 + ((y0 + h * K3) - X1) ^ 4Y1 = y0 + h * (K1 + 2 * K2 + 2 * K3 + K4) / 6Print "x="; X1, "y="; Y1x0 = X1y0 = Y1X1 = x0 + hWendEnd Sub5.5.2 算例用四阶龙格-库塔法计算(0≤x≤1)区间等分数N=4 5.5.3 运行结果作业格式要求:1 作业文应采用国家正式公布实施的简化汉字和法定的计量单位。