计算方法与实习上机题答案Word格式文档下载.docx
- 文档编号:20558949
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:37
- 大小:276.10KB
计算方法与实习上机题答案Word格式文档下载.docx
《计算方法与实习上机题答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《计算方法与实习上机题答案Word格式文档下载.docx(37页珍藏版)》请在冰豆网上搜索。
n--;
}
2已知连分数
利用下面的方法计算f:
写一个程序,读入n,
计算并打印f
inti=0,n;
floata[1024],b[1024],d[1024];
pleaseinputn,n="
);
scanf("
%d"
&
n);
\npleaseinputa[1]toa[n]:
\n"
for(i=1;
i<
=n;
i++)
printf("
a[%d]="
i);
scanf("
%f"
a[i]);
\npleaseinputb[0]tob[n]:
for(i=0;
b[%d]="
b[i]);
d[n]=b[n];
for(i=n-1;
i>
=0;
i--)
d[i]=b[i]+a[i+1]/d[i+1];
\nf=%f\n"
d[0]);
3给出一个有效的算法和一个无效的算法计算积分
main()
doubley_0=(1/4.0)*log(5),y_1;
doubley_2=(1.0/55.0+1.0/11.0)/2,y_3;
intn=1,m=10;
有效算法输出结果:
y[0]=%-20f"
y_0);
y_1=1.0/(4*n)+y_0/(-4.0);
y[%d]=%-20f"
n,y_1);
=10)
break;
y_0=y_1;
if(n%3==0)
}
\n无效算法的输出结果:
y[10]=%-20f"
y_2);
y_3=1.0/n-4.0*y_2;
m-1,y_3);
if(m<
=1)
y_2=y_3;
m--;
if(m%2==0)printf("
4设
,已知其精确值为
(1)编制按从小到大顺序计算
的程序
(2)编制按从小达到的顺序计算
(3)按两种顺序分别计算
并指出有效位数
intN;
doubleSN[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;
N<
=30000;
N++)
SN[N]=SN[N-1]+1.0/(N*N-1);
从小到大顺序计算:
实习题2
1.用牛顿法求下列方程的根
#include<
typedeffloat(*p)(float);
floatff1(floatx)
returnx*x-exp(x);
floatff2(floatx)
returnx*exp(x)-1;
floatff3(floatx)
returnlog(x)+x-2;
floatanswer(float(*p)(float))
intk=2;
floatm=1,n=-1,x2,a,b,c;
if(p==ff3)n=2;
x[0]=%.4f,x[1]=%.4f,"
m,n);
while
(1)
if(fabs(m-n)<
1e-4)break;
a=p(n)*(n-m);
b=p(n)-p(m);
c=a/b;
x2=n-c;
m=n;
n=x2;
x[%d]=%.4f,"
k,x2);
k++;
if(k%3==0)printf("
if(k%3!
=0)printf("
iterationtimes:
%d,roots:
%.4f\n"
k-2,n);
return0;
main()
x*x-exp(x),\n"
answer(ff1);
x*exp(x)-1,\n"
answer(ff2);
lg(x)+x-2,\n"
answer(ff3);
2.编写一个割线法的程序,求解上述各方程
floatgexian(float,float);
floatf(float);
inti,j;
floatx1=2.2;
floatx2=2,x3;
i);
if(i==1)
x1);
elseif(i==2)
x2);
else
for(j=3;
j<
=i;
j++)
{
x3=gexian(x1,x2);
x1=x2;
x2=x3;
gexian(x1,x2));
}
floatf(floatx)
return(x*x-exp(x));
floatgexian(floatx1,floatx2)
return(x2-(f(x2)/(f(x2)-f(x1)))*(x2-x1));
实习题3
1用列主元消去法解下列方程组;
源程序:
voidColPivot(float*,int,float[]);
voidColPivot(float*c,intn,floatx[])
inti,j,t,k;
floatp;
=n-2;
k=i;
for(j=i+1;
=n-1;
if(fabs(*(c+j*(n+1)+i))>
(fabs(*(c+k*(n+1)+i))))
k=j;
if(k!
=i)
for(j=i;
{
p=*(c+i*(n+1)+j);
*(c+i*(n+1)+j)=*(c+k*(n+1)+j);
*(c+k*(n+1)+j)=p;
}
for(j=i+1;
p=(*(c+j*(n+1)+i))/(*(c+i*(n+1)+i));
for(t=i;
t<
t++)
*(c+j*(n+1)+t)-=p*(*(c+i*(n+1)+t));
for(j=n-1;
j>
=i+1;
j--)
(*(c+i*(n+1)+n))-=x[j]*(*(c+i*(n+1)+j));
x[i]=*(c+i*(n+1)+n)/(*(c+i*(n+1)+i));
voidmain()
inti;
floatx[4];
floatc[4][5]={1,1,0,3,4,2,1,-1,1,1,3,-1,-1,3,-3,-1,2,3,-1,4};
ColPivot(c[0],4,x);
=3;
x[%d]=%f\n"
i,x[i]);
第
(1)题
第
(2)题
2、
floata[4][5]={48,-24,0,-12,4,-24,24,12,12,4,0,6,20,2,-2,-6,6,2,16,-2};
voidDirectLU(float*,int,float[]);
DirectLU(a[0],4,x);
i++)
voidDirectLU(float*u,intn,floatx[])
inti,r,k;
for(r=0;
r<
r++)
for(i=r;
for(k=0;
k<
=r-1;
k++)
*(u+r*(n+1)+i)-=*(u+r*(n+1)+k)*(*(u+k*(n+1)+i));
for(i=r+1;
{
for(k=0;
*(u+i*(n+1)+r)-=*(u+i*(n+1)+k)*(*(u+k*(n+1)+r));
*(u+i*(n+1)+r)/=*(u+r*(n+1)+r);
}
for(r=n-1;
r>
r--)
*(u+i*(n+1)+n)-=*(u+i*(n+1)+r)*x[r];
x[i]=*(u+i*(n+1)+n)/(*(u+i*(n+1)+i));
实习题4
1、
floatLagrange(floatx[],floaty[],floatxx,intn)//n为(n+1)次插值;
float*a,yy=0;
a=newfloat[n];
a[i]=y[i];
for(j=0;
if(j!
=i)a[i]*=(xx-x[j])/(x[i]-x[j]);
yy+=a[i];
deletea;
returnyy;
floatx[5]={-3.0,-1.0,1.0,2.0,3.0};
floaty[5]={1.0,1.5,2.0,2.0,1.0};
floatxx1=-2,xx2=0,xx3=2.75,yy1,yy2,yy3;
yy1=Lagrange(x,y,xx1,3);
yy2=Lagrange(x,y,xx2,3);
yy3=Lagrange(x,y,xx3,3);
x1=%-20f,y1=%f\n"
xx1,yy1);
x2=%-20f,y2=%f\n"
xx2,yy2);
x3=%-20f,y3=%f\n"
xx3,yy3);
floatx[6]={0.30,0.42,0.50,0.58,0.66,0.72};
floaty[6]={1.04403,1.08462,1.11803,1.15603,1.19817,1.23223};
floatxx1=0.46,xx2=0.55,xx3=0.60,yy1,yy2,yy3;
yy1=Lagrange(x,y,xx1,6);
yy2=Lagrange(x,y,xx2,6);
yy3=Lagrange(x,y,xx3,6);
3、
#defineN3
voidDifference(floaty[],floatf[4][4],intn)
intk,i;
f[0][0]=y[0];
f[1][0]=y[1];
f[2][0]=y[2];
f[3][0]=y[3];
for(k=1;
for(i=0;
=(N-k);
f[i][k]=f[i+1][k-1]-f[i][k-1];
return;
inti,k=1;
floata,b=1,m=21.4,t=1.4,f[4][4]={0};
floatx[5]={20,21,22,23,24};
floaty[5]={1.30103,1.32222,1.34242,1.36173,1.38021};
Difference(y,f,N);
a=f[0][0];
=N;
k=k*i;
b=b*(t-i+1);
a=a+b*f[0][i]/k;
x(k)\n"
for(i=0;
=4;
printf("
%-20f"
x[i]);
\ny(k)\n"
y[i]);
\nF(%d)\n"
k);
=(3-k);
{
f[i][k]);
}
printf("
f(%f)=%-20f"
m,a);
实习题5
inti,n;
floata[2];
floatx[15]={1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8},z[15];
floaty[15]={33.4,79.50,122.65,159.05,189.15,214.15,238.65,252.50,267.55,280.50,296.65,301.40,310.40,318.15,325.15};
for(n=0;
n<
=14;
n++)//增加了数组z;
z[n]=log(y[n]/x[n]);
voidApprox(float[],float[],int,int,float[]);
Approx(x,z,15,1,a);
//变成一次拟合;
//for(i=0;
=1;
//printf("
a[%d]=%f\n"
i,a[i]);
a=exp(a[0])=%f\n"
exp(a[0]));
b=-a[1]=%f\n"
-a[1]);
voidApprox(floatx[],floaty[],intm,intn,floata[])
inti,j,t;
float*c=newfloat[(n+1)*(n+2)];
floatpower(int,float);
voidColPivot(float*,int,float[]);
*(c+i*(n+2)+j)=0;
for(t=0;
=m-1;
*(c+i*(n+2)+j)+=power(i+j,x[t]);
*(c+i*(n+2)+n+1)=0;
*(c+i*(n+2)+n+1)+=y[j]*power(i,x[j]);
ColPivot(c,n+1,a);
deletec;
voidColPivot(float*c,intn,floatx[])
t++)*(c+j*(n+1)+t)-=p*(*(c+i*(n+1)+t));
floatpower(inti,floatv)
floata=1;
while(i--)a*=v;
returna;
实习题6
(1)
floatCotes(float(*f)(float),floata,floatb,intn)
intk;
floatc,c1=0,c2,c3,c4;
floath=(b-a)/n;
c2=(*f)(a+h/4);
c3=(*f)(a+h/2);
c4=(*f)(a+3*h/4);
c1+=(*f)(a+k*h);
c2+=(*f)(a+k*h+h/4);
c3+=(*f)(a+k*h+h/2);
c4+=(*f)(a+k*h+3*h/4);
c=h/90*(7*((*f)(a)+(*f)(b))+14*c1+32*c2+12*c3+32*c4);
returnc;
floatf(floatx)
return1/sqrt(1+x*x*
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算方法 实习 上机 答案