文档介绍:数值计算方法实验报告
班级:09医软1班 指导教师:金力
工作组成员:谢清泉(负责程序主体部分的编写)
魏月圆(负责流程图和实验报告的书写)
项波波(负责程序的调试和修改)
}
printf("请输入常量向量 b:");
for(i=0;i<n;i++)
scanf("%f",&b[i]); /*一维数组分配值*/
printf("联合矩阵为:\n");
for(i=0;i<n;i++) /*将数组结合,检验输入是否有误*/
{
for(j=0;j<n;j++)
printf("%",a[i][j]);
printf("%",b[i]);
printf("\n");
}
}
float init_vec(int n,float x[N]) /*获取初始值*/
{
int i;
printf("请输入初始解 x:");
for(i=0;i<n;i++)
scanf("%f",&x[i]);
}
float gs(int n,float a[N][N],float b[N],float x[N]) /*迭代的实现*/
{
int i,j,k;
float m;
float tmp1,tmp2,x2[N];
printf("请输入精度m: ");
scanf("%f",&m);
for(k=0;k<10001;k++) /*设定最大迭代次数不能超过1000*/
{
for(i=0;i<n;i++)
x2[i]=x[i];
for(i=0;i<n;i++)
{
tmp1=;
tmp2=;
for(j=0;j<i;j++)
tmp1+=a[i][j]*x[j];
for(j=i+1;j<n;j++)
tmp2+=a[i][j]*x2[j];
x[i]=(b[i]-tmp1-tmp2)/a[i][i];
}
for(i=0,j=0;i<n;i++)
if(fabs(x2[i]-x[i])<m) j++; /*求解两向量差的范数*/
if(j==n)
{
printf("\n Gauss-Seidel 迭代已完成!");