计算实习报告怎么写?( 五 )


21、用两种不同的顺序计算?n,分析其误差的变化
n?110000
2、已知连分数f?b0?a1,利用下面的算法计算f:
b1?a2/?b2?a3/(...?an/bn)?ai?
1(i?n?1,n?2,..., 0f?d0 di?1写一程序,读入n,b0,b1,...,bn,a1,...,an,计算并打印f dn?bn,di?bi?
3、给出一个有效的算法和一个无效的算法计算积分
xnyn??dx
(n?0,1,..., 104x?1N11?311?
4、设SN??2,已知其精确值为????
2?2NN?1?j?2j?1(1)编制按从大到小的顺序计算SN的程序 1(2)编制按从小到大的顺序计算SN的程序
(3)按两种顺序分别计算S1000,S10000,S30000,并指出有效位数
三、实验步骤、程序设计、实验结果及分析
?
21、用两种不同的顺序计算?n,分析其误差的变化
n?110000(1)实验步骤:
分别从1~10000和从10000~1两种顺序进行计算,应包含的头文件有stdio.h和math.h (2)程序设计: a.顺序计算
#include #include void main() {double sum=0;int n=1;while(1){
sum=sum+(1/pow(n,2));
if(n%1000==0) printf("sun[%d]=%-30f",n,sum);
if(n>=10000) break;
n++;}printf("sum[%d]=%f\\\\n",n,sum); } b.逆序计算
#include #include void main() {double sum=0;int n=10000;
while(n!=0){
sum=sum+(1/pow(n,2));
if(n%200==0)
printf("sum[%d]=%-10f",n,sum);
if(nn--;}printf("sum[%d]=%f\\\\n",n,sum); }
(3)实验结果及分析: 程序运行结果: a.顺序计算
b.逆序计算
结果分析:两种不同顺序计算结果是一样的,顺序计算误差从一开始就很小,而逆序计算误差最开始十分大,后来结果正确 。
2、已知连分数f?b0?(1)实验步骤: 利用 dn?bn,di?bi?a1,计算f:
b1?a2/?b2?a3/(...?an/bn)?ai?1,0
(i?n?1,n?2,...,f?d0,计算f
di?1(2)程序设计 #include #include void main() {int i=0,n;float a[100],b[100],c[100];printf("please input n=");scanf("%d",&n);
printf("\\\\nplease input a[0] to a[n-1]:\\\\n");for(i=1;iprintf("a[%d]=",i);
scanf("%f",&a[i]);}
printf("\\\\nplease input b[0] to b[n-1]:\\\\n");for(i=0;iprintf("b[%d]=",i);
scanf("%f",&b[i]);}
d[n]=b[n];for(i=n-1;i>=0;i--)
c[i]=b[i]+a[i+1]/c[i+1];printf("\\\\nf=%f\\\\n",c[0]); } (3)实验结果 程序运行结果:
3、给出一个有效的算法和一个无效的算法计算积分
xnyn??dx
(n?0,1,..., 104x?11(1)实验步骤
利用C语言编写程序,分别使用数值稳定的和数值不稳定的计算公式所建立的递推公式进行计算 。
(2)程序设计 #include #include main() {double y_0=(1/4.0)*log(5),y_1;double y_2=(1.0/55.0+1.0/11.0)/2,y_3;int n=1,m=10;printf("有效算法输出结果:\\\\n");printf("y[0]=%-20f",y_0);while(1){
y_1=1.0/(4*n)+y_0/(-4.0);
printf("y[%d]=%-20f",n,y_1);
if(n>=10)break;
y_0=y_1;
n++;
if(n%3==0) printf("\\\\n");}printf("\\\\n无效算法的输出结果:\\\\n");printf("y[10]=%-20f",y_2);while(1){
y_3=1.0/n-4.0*y_2;