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


printf("y[%d]=%-20f",m-1,y_3);
if(m y_2=y_3;
m--;
if(m%2==0) printf("\\\\n");} } (3)实验结果及分析 程序运行结果:
结果分析:无效算法数值不稳定,误差造成的影响特别大
4、设SN?
?j?2N11?311?,已知其精确值为????
2?2NN?1?j2?1(1)实验步骤
先编程按从大到小的顺序计算SN的程序,再编程按从小到大的顺序计算SN的程序,然后按两种顺序分别计算S1000,S10000,S30000 。(2)程序设计 #include main() {
int N;double SN[30000];SN[30000]=(3.0/2.0-1.0/30000.0-1/30001.0)/2.0;
for(N=30000;N>=2;N--)
SN[N-1]=SN[N]-1.0/(N*N-1);printf("从大到小顺序计算\\\\nSN[1000]=%f\\\\nSN[10000]=%f\\\\nSN[30000]=%f\\\\n",SN[1000],SN[10000],SN[30000]);
SN[2]=(3.0/2-1.0/2.0-1/3.0)/2.0;for(N=3;NSN[N]=SN[N-1]+1.0/(N*N-1);printf("从小到大顺序计算\\\\nSN[1000]=%f\\\\nSN[10000]=%f\\\\nSN[30000]=%f\\\\n",SN[1000],SN[10000],SN[30000]); } (3)实验结果及分析 程序运行结果:
【计算实习报告怎么写?】

结果分析:不同顺序计算所得结果是一样的 。
四、总结
通过这次上机,学习了解了舍入误差在不同算法时对结果的影响不同,稳定的算法才能获得正确的结果 。
习题二:
一、实验目的
(1)通过对二分法与牛顿迭代法做编程练习和上机运算,进一步体会二分法和牛顿法的不同 。
(2)编写割线迭代法的程序,求非线性方程的解,并与牛顿迭代法作比较 。
二、实验内容
1、用牛顿法求下列方程的根 (1)x?e?0
(2)xe?1?0 (3)lgx?x?2?0
2、编写割线法程序求解第一问的方程
三、实验步骤、程序设计、实验结果及分析
1、牛顿法 (1)实验步骤
通过定义牛顿法求方程的子函数,用main函数调用子函数求根 (2)程序设计 #include#includetypedef float (*p)(float );
float ff1(float x) {
return x*x-exp(x); } x2xfloat ff2(float x) {
return x*exp(x)-1; } float ff3(float x) {
return log(x)+x-2; } float
answer(float(*p)(float)) {
int k=2;
float m=1,n=-1,x2,a,b,c;
if (p==ff3)n=2;
printf("x[0] = %.4f, x[1] = %.4f, ",m,n);
while (1)
{
if (fabs(m-n)a=p(n)*(n-m);
b=p(n)-p(m);
c=a/b;
x2=n-c;
m = n;
n = x2;
printf("x[%d] = %.4f, ",k,x2);
k++;
if (k%3==0) printf("\\\\n");
}
if (k%3!=0) printf("\\\\n");
printf("iteration times: %d, roots: %.4f\\\\n ",k-2,n);return 0; }main() {printf("x*x-exp(x),\\\\n");answer(ff1);printf("x*exp(x)-1,\\\\n");answer(ff2);printf("lg(x)+x-2,\\\\n");answer(ff3);return 0; } (3)实验结果及分析
2、割线法 (1)程序设计 #include #include float gexian(float,float); float f(float); main() {
int i,j;
float x1=2.2;
float x2=2,x3;
scanf("%d",&i);
if(i==1) printf("%f",x1);
else if(i==2) printf("%f",x2);
else