西安电子科技大学出版社计算方法上机答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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]);