文档库 最新最全的文档下载
当前位置:文档库 › 计算方法——雅克比迭代法(C程序)

计算方法——雅克比迭代法(C程序)

#include
#include
#define L 1000
#define M 3
#define N 4
void main()
{
int i,j,k,l=0;
float m,e,a[M][N],x[M],y[M],temp[M];
printf("\n请输入方程组的增广矩阵:\n");
for(i=0;i<=M-1;i++)
for(j=0;j<=N-1;j++)
scanf("%f",&a[i][j]);
printf("\n请输入初始向量:\n");
for(i=0;i<=M-1;i++)
scanf("%f",&x[i]);
printf("\n请输入误差范围:\n");
scanf("%f",&e);
for(i=0;i<=M-1;i++)
{
m=1/a[i][i];
for(j=0;j<=N-1;j++)
a[i][j]=a[i][j]*m;
for(j=0;j<=N-2;j++)
a[i][j]=-a[i][j];
a[i][i]=0;
}
printf("\n迭代过程如下:\n");
for(k=1;k<=L;k++)
{
for(i=0;i<=M-1;i++)
{
temp[i]=x[i];
y[i]=a[i][0]*x[0];
for(j=1;j<=N-2;j++)
y[i]=y[i]+a[i][j]*x[j];
y[i]=y[i]+a[i][N-1];
}
for(i=0;i<=M-1;i++)
{
x[i]=y[i];
printf("%12f",x[i]);
if(fabs(temp[i]-x[i])<=e)
l=l+1;
}
printf("\n");
if(l==3)
break;
}
printf("\n方程组的解为:\n");
for(i=0;i<=M-1;i++)
printf("%12f",x[i]);
printf("\n\n");
}

相关文档