计算方法实验代码及实验结果截图详解.doc
文本预览下载声明
实验一:迭代法一
#includestdio.h
#include MATH.H
#define x0 2
#define maxrept 1000;
#define G(x) pow(x+1/2.0,1.0/3)
void main(){
int i;
double x_k=x0,x_k1=x0;
printf( k xk\n);
for (i=0;i10;i++)
{
printf( %d %g\n,i,x_k1);
x_k1=G(x_k);
x_k=x_k1;
}
printf(迭代10后的结果是:%g\n,x_k);
}
实验一:迭代法二
#includestdio.h
#include MATH.H
#define x0 0
#define maxrept 1000;
#define G(x) 2*x*x*x-1
void main(){
int i;
double x_k=x0,x_k1=x0;
printf( k xk\n);
for (i=0;i10;i++)
{
printf( %d %g\n,i,x_k1);
x_k1=G(x_k);
x_k=x_k1;
}
printf(迭代10后的结果是:%g\n,x_k);
}
实验一:牛顿法一
#includestdio.h
#include MATH.H
#define x0 0
#define MAXREPT 1000
#define EPS 0.5E-5
#define G(x) x-(x*x*x-x-1)/(3*x*x-1)
void main()
{
int i;
double x_k=x0,x_k1=x0;
printf( k xk\n);
for (i=0;iMAXREPT;i++)
{
printf( %d %g\n,i,x_k1);
x_k1=G(x_k);
if(fabs(x_k1-x_k)EPS)
{
printf(The root is x=%g,k=%d\n,x_k1,i);
return;
}
x_k=x_k1;
}
}
实验一:牛顿法二
#includestdio.h
#include MATH.H
#define x0 1.5
#define MAXREPT 1000
#define EPS 0.5E-5
#define G(x) x-(x*x*x-x-1)/(3*x*x-1)
void main()
{
int i;
double x_k=x0,x_k1=x0;
printf( k xk\n);
for (i=0;iMAXREPT;i++)
{
printf( %d %g\n,i,x_k1);
x_k1=G(x_k);
if(fabs(x_k1-x_k)EPS)
{
printf(The root is x=%g,k=%d\n,x_k1,i);
return;
}
x_k=x_k1;
}
}
实验二:Gauss消元法
#includestdio.h
#includemath.h
#define N 4
static double
aa[N][N+1]={{1,-1,1,-4,2},{5,-4,3,12,4},{2,1,1,11,3},{2,-1,7,-1,0}};
int gauss(double a[][N+2],double x[]);
void putout(double a[][N+2]);
void main()
{
int i,j,det;
double a[N+1][N+2],x[N+1];
for(i=1;i=N;i++)
for(j=1;j=N+1;j++)
a[i][j]=aa[i-1][j-1];
det=gauss(a,x);
if (det!=0)
for (i=1;i=N;i++)printf( x[%d]=%g,i,x[i]);
}
int gauss(double a[][N+2],double x[])
{int i,j,k,r;
double c;
putout(a);
for (k=1;k=N-1;k++)
{if(fabs(a[k][k])1e-17)
{printf(\n pivot element is 0. fail! \n);return(0);}
for(i=k+1;i=N;i++)
{c=a[i][k]/a[k][k];
for(j=k;j=N+1;j++)
{a[i][j]=a[i][j]-c*a[k][j];
显示全部