数值计算方法上机实习报告.
实 习 报 告
课程名称:数值计算方法上机
学 院:电气信息工程学院
姓 名: 李勇
学 号: 3100501063
2011年12月30日
数值计算方法上机习题
1.用Newton迭代法求解方程在2.0附近的实根,。
源程序:
#include
#include
main()
{
double x,f,f1;
scanf("%lf",&x);
for(;;x=x-f/f1)
{
f=x*x*x-3*x-1;
f1=3*x*x-3;
if(fabs(f)<0.5e-5)
break;
}
printf("r=%lf\n",x);
getch ();
return 0;
}
输入:2.0
运行结果:r=1.879385
2. 设
(1)
(2)
试用高斯-约旦消去法求方程组的解。
源程序:
#include
#include
main()
{ float a[5][5]={0,0,0,0,0,0,5,7,9,10,0,6,8,10,9,0,7,10,8,7,0,5,7,6,5},
b[5]={0,1,1,1,1},s,t,am;
int i,j,l,k;
clrscr();
for(k=1;k<=4;k++)
{ am=fabs(a[k][k]);
l=k;
for(i=k;i<=4;i++)
if(fabs(a[i][k])>am)
{ am=fabs(a[i][k]); l=i; }
if(a[l][k]==0)
{ printf("qi yi ju zhen."); break; }
if(l!=k)
{ for(j=k;j<=4;j++)
{ t=a[k][j];a[k][j]=a[l][j];a[l][j]=t; }
s=b[l]; b[l]=b[k]; b[k]=s;}
for(j=k+1;j<=4;j++)
a[k][j]=a[k][j]/a[k][k];
b[k]=b[k]/a[k][k];
for(i=1;i<=4;i++)
{if(i==k) continue;
b[i]=b[i]-a[i][k]*b[k];
for(j=k+1;j<=4;j++)
a[i][j]=a[i][j]-a[i][k]*a[k][j];}
}
printf("x1=%f\n",b[1]);
printf("x2=%f\n",b[2]);
printf("x3=%f\n",b[3]);
printf("x4=%f\n",b[4]);
}
运行结果:
x1=19.999809
x2=-11.999882
x3=-4.999953
x4=2.999972
源程序:
#include
#include
main()
{ float a[4][4]={0,0,0,0,0,2,1,-3,0,3,6,2,0,4,5,-3},
b[4]={0,-5,9,5},s,t,am;
int i,j,l,k;
clrscr();
for(k=1;k<=3;k++)
{ am=fabs(a[k][k]);
l=k;
for(i=k;i<=3;i++)
if(fabs(a[i][k])>am)
{am=fabs(a[i][k]); l=i;}
if(a[l][k]==0)
{printf("qi yi ju zhen."); break; }
if(l!=k)
{ for(j=k;j<=3;j++)
{t=a[k][j]; a[k][j]=a[l][j];a[l][j]=t;}
s=b[l]; b[l]=b[k]; b[k]=s;}
for(j=k+1;j<=3;j++)
a[k][j]=a[k][j]/a[k][k];
b[k]=b[k]/a[k][k];
for(i=1;i<=3;i++)
{if(i==k) continue;
b[i]=b[i]-a[i][k]*b[k];
for(j=k+1;j<=3;j++)
a[i][j]=a[i][j]-a[i][k]*a[k][j];}
}
printf("x1=