1数值分析上机题习题117.(上机题)舍入误差与有效数设2211NNjSj,其精确值为1311221NN。(1)编制按从大到小的顺序22211121311NSNL,计算NS的通用程序。(2)编制按从小到大的顺序2221111(1)121NSNNL,计算NS的通用程序。(3)按两种顺序分别计算210S,410S,610S,并指出有效位数。(编制程序时用单精度)(4)通过本上机题你明白了什么?按从大到小的顺序计算NS的通用程序为:#includefloatsum(floatN){floatj,s,sum=0;for(j=2;j<=N;j++){s=1/(j*j-1);sum+=s;}returnsum;}按从小到大的顺序计算NS的通用程序为:#includefloatsum(floatN){floatj,s,sum=0;for(j=N;j>=2;j--){s=1/(j*j-1);sum+=s;}returnsum;}从大到小的顺序的值从小到大的顺序的值精确值有效位数从大到小从小到大210S0.7400490.740050.74004965410S0.7498520.74990.749944610S0.7498520.7499990.74999936通过本上机题,看出按两种不同的顺序计算的结果是不相同的,按从大到小的顺序计算的值与精确值有较大的误差,而按从小到大的顺序计算的值与精确值吻合。从大到小的顺序计算得到的结果的有效位数少。计算机在进行数值计算时会出现“大数吃小数”的现象,导致计算结果的精度有所降低,我们在计算机中进行同号数的加法时,采用绝对值较小者先加的算法,其结果的相对误差较小。2习题220.(上机题)Newton迭代法(1)给定初值0x及容许误差,编制Newton法解方程()0fx根的通用程序。(2)给定方程3()/30fxxx,易知其有三个根13x,20x,33x。1.由Newton方法的局部收敛性可知存在0,当0(,)x时,Newton迭代序列收敛于根2x。试确定尽可能大的。2.试取若干初始值,观察当0(,1)x,(1,),(,),(,1),(1,)时Newton序列是否收敛以及收敛于哪一个根。(3)通过本上机题,你明白了什么?解:(1)编制的通用程序:#include#include#defineeps0.000001/给定容许误差floatf(floatx)//定义函数f(x){floatf;f=x*x*x/3-x;//f(x)的表达式;return(f);}floatdf(floatx)//定义函数df(x),计算f(x)的导函数{floatdf;df=x*x-1;//f(x)导函数的表达式;return(df);}voidmain(void){floatx0,x1,a;intk=0;cout<<"请输入初值x0:";cin>>x0;do{a=-f(x0)/df(x0);x1=x0+a;k++;x0=x1;}while(fabs(a)>eps);cout<#includevoiddelay(intn)//定义延时函数{for(n=10000;n>0;n--);}#defineeps0.000001floatf(floatx)//定义函数f(x){floatf;f=x*x*x/3-x;//f(x)的表达式;return(f);}floatdf(floatx)//定义函数df(x),计算f(x)的导函数{floatdf;df=x*x-1;//f(x)导函数的表达式;return(df);}3intjudgement(floatz){intcount=5;floatx0,x1,type,type1;x0=z;while(count-->0){x1=x0-f(x0)/df(x0);type=fabs(x1);type1=fabs(x1-x0);//调试值用cout<<"count="<