=20)break;elseI0=I1" />

西安电子科技大学出版社计算方法上机答案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西安电子科技大学出版社《计算方法》任传祥等编著第九章计算方法上机参考答案

实验一,算法一

#include

#include

double I0=log(6)/log(5),I1;

int n=1;

main ()

{

while(1)

{

I1=1.0/(n)-I0*5.0;

printf("%d %lf\n", n,I1);

if(n>=20)

break;

else

I0=I1;

n++;

}

}

实验一,算法二

#include

#include

double I0=(1/105.0+1/126.0)/2,I1;

int n=20;

main ()

{

printf("%d %lf\n", n,I0);

while(1)

{

I1=1.0/(5.0*n)-I0/5.0;

printf("%d %lf\n", n-1,I1);

if(n<2)

break;

else

I0=I1;

n--;

}

}

实验二,二分法

#include

#include

#define esp 1e-3

double f(double x);

main ()

{

double a=1,b=2,x;

while(fabs(b-a)>esp)

{

x=(a+b)/2;

printf("x=%lf\n",x);

if(f(x)==0)

break;

else

if(f(x)*f(a)<0)b=x;

else

a=x;

}

}

double f(double x)

{

return pow(x,3)-x-1;

}

实验二,牛顿迭代法

#include

#include

double f(double x);

double f1(double x);

#define esp 1e-3

void main()

{double x0 = 1.5, x1;

x1 = x0 - f(x0) / f1(x0);

printf("x=%lf\n", x1);

x0 = x1;

x1 = x0 - f(x0) / f1(x0);

printf("x=%lf\n", x1);

while (fabs(x1 - x0)>esp){

x0 = x1;

x1 = x0 - f(x0) / f1(x0);

printf("x=%lf\n", x1);} }

double f(double x)

{return pow(x, 3) - x - 1;} double f1(double x)

{return 3 * x*x - 1;}

弦割法

#include

#include

double f(double x);

#define esp 1e-3

void main()

{double x0 = 1.5, x1=2.0,x2;

do

{ x2=x1 - (x1-x0)*f(x1) /(f(x1)-f(x0));

x0=x1;

x1=x2;

printf("x=%lf\n", x1);

}

while (fabs(x1 - x0)>esp);

{

printf("x=%lf\n", x1);

}

}

double f(double x)

{return pow(x, 3) - x - 1;}

实验3

#include /*列主元高斯消去法*/

#include

float x[3],temp,max;

float A[3][4]={10,-2,-1,3,-2,10,-1,15,-1,-2,5,10},c[3][4]={10,-2,-1,3,-2,10,-1,15,-1,-2,5,10}; int n=3,i,k,j,m;

void main()

{

for(i=0;i

{

max=A[i][i];

k=i;

for(j=j+1;j

{

{

max=fabs(A[j][i]);

k=j;

}

}

if(k!=i)

{

for(j=i+1;j<=n;j++)

{

temp=A[i][j];

A[i][j]=A[k][j];

A[k][j]=temp;

}

}

for(j=i+1;j

for(m=i+1;m<=n;m++)

{

c[j][m]=c[j][m]+(-c[j][i]/c[i][i])*c[i][m];

}

}

for(i=n-1;i>=0;i--)

{

temp=0.0;

for(j=n-1;j>=i+1;j--)

temp=temp+c[i][j]*x[j];

x[i]=(c[i][n]-temp)/c[i][i];

}

printf("x[1]=%f\nx[2]=%f\nx[3]=%f\n",x[0],x[1],x[2]);

相关文档
最新文档