计算方法与实习上机题答案Word下载.docx

上传人:b****1 文档编号:1038267 上传时间:2023-04-30 格式:DOCX 页数:41 大小:288.27KB
下载 相关 举报
计算方法与实习上机题答案Word下载.docx_第1页
第1页 / 共41页
计算方法与实习上机题答案Word下载.docx_第2页
第2页 / 共41页
计算方法与实习上机题答案Word下载.docx_第3页
第3页 / 共41页
计算方法与实习上机题答案Word下载.docx_第4页
第4页 / 共41页
计算方法与实习上机题答案Word下载.docx_第5页
第5页 / 共41页
计算方法与实习上机题答案Word下载.docx_第6页
第6页 / 共41页
计算方法与实习上机题答案Word下载.docx_第7页
第7页 / 共41页
计算方法与实习上机题答案Word下载.docx_第8页
第8页 / 共41页
计算方法与实习上机题答案Word下载.docx_第9页
第9页 / 共41页
计算方法与实习上机题答案Word下载.docx_第10页
第10页 / 共41页
计算方法与实习上机题答案Word下载.docx_第11页
第11页 / 共41页
计算方法与实习上机题答案Word下载.docx_第12页
第12页 / 共41页
计算方法与实习上机题答案Word下载.docx_第13页
第13页 / 共41页
计算方法与实习上机题答案Word下载.docx_第14页
第14页 / 共41页
计算方法与实习上机题答案Word下载.docx_第15页
第15页 / 共41页
计算方法与实习上机题答案Word下载.docx_第16页
第16页 / 共41页
计算方法与实习上机题答案Word下载.docx_第17页
第17页 / 共41页
计算方法与实习上机题答案Word下载.docx_第18页
第18页 / 共41页
计算方法与实习上机题答案Word下载.docx_第19页
第19页 / 共41页
计算方法与实习上机题答案Word下载.docx_第20页
第20页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

计算方法与实习上机题答案Word下载.docx

《计算方法与实习上机题答案Word下载.docx》由会员分享,可在线阅读,更多相关《计算方法与实习上机题答案Word下载.docx(41页珍藏版)》请在冰点文库上搜索。

计算方法与实习上机题答案Word下载.docx

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)

printf("

}

\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);

从大到小顺序计算:

\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*x);

voidmain(

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2