计算方法与实习上机题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实习题1
1用两种不容的顺序计算644834.11000
12≈∑=-n n
,分析误差的变化
(1)顺序计算
源代码:
#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);
}
结果:
(2)逆序计算
源代码:
#include
#include
void main()
{
double sum=0;
int n=10000;
while(1)
{
sum=sum+(1/pow(n,2));
if(n%1000==0)
printf("sum[%d]=%-30f",n,sum);
if(n<=1)break;
n--;
}
printf("sum[%d]=%f\n",n,sum);
}
结果:
2已知连分数
))
/
/(...
/(
3
2
2
1
1
n
n
b
a
a
b
a
b
a
b
f
+
+
+
+
=
利用下面的方法计算f:
1
1)0
,...,
2
,1
(
,
d
f
n
n
i
d
a
b
d
b
d
i
i
i
i
n
n
=
-
-
=
+
=
=
+
+
写一个程序,读入n,
n
n
b
a,,计算并打印f
源代码:
#include
#include
void main()
{
int i=0,n;
float a[1024],b[1024],d[1024];
printf("please input n,n=");
scanf("%d",&n);
printf("\nplease input a[1] to a[n]:\n");
for(i=1;i<=n;i++)
{
printf("a[%d]=",i);
scanf("%f",&a[i]);
}
printf("\nplease input b[0] to b[n]:\n");
for(i=0;i<=n;i++)
{
printf("b[%d]=",i);
scanf("%f",&b[i]);
}
d[n]=b[n];
for(i=n-1;i>=0;i--)
d[i]=b[i]+a[i+1]/d[i+1];
printf("\nf=%f\n",d[0]);
}
结果:
3给出一个有效的算法和一个无效的算法计算积分
⎰=+=10
)10,...1,0(14n dx x x y n
n 源代码:
#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;
printf("y[%d]=%-20f",m-1,y_3);
if(m<=1)
break;
y_2=y_3;
m--;
if(m%2==0) printf("\n");
}
}
结果:
4设∑=-=N j N j S 2211,已知其精确值为)1
1123(21+--N N (1)编制按从小到大顺序计算N S 的程序
(2)编制按从小达到的顺序计算N S 的程序