📄 05.c
字号:
#include <stdio.h>
#include <math.h>
#define M 3
#define t 1
#define N 3
int a[M][N];/*设定线性方程组的系数*/
int b[M][N];/*定义雅可比中的B*/
int f[M][t];/*定义雅可比中的F*/
int d[M][N];/*设定线性方程组的主对角线上的逆矩阵*/
int e[M][N];/*定义单位矩阵*/
int p[M][N];/*定义D与方程组的系数的积*/
int x[M][t];/*定义X为方程组的解矩阵*/
int q[M][t];/*设定解矩阵的初始值*/
int y[M][N];
main()
{int i,j,k,sum1=0,sum2=0;
int m=0,n=0.0001;
printf("a[3][3]=");
for(i=0;i<M;i++)
{for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
printf("\n");
}
/*输入线性方程组的系数a[i][j]*/
printf("b[3][0]=");
for(i=0;i<M;i++)
{scanf("%d",&b[i][0]);
printf("%d ",b[i][0]);
}
/*输入b*/
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{if(i==j)
{d[i][j]=1/a[i][j];e[i][j]=1;}
else
{d[i][j]=0;e[i][j]=0;}
} /*求主对角逆矩阵D及单位矩阵e*/
for(i=0;i<M;i++)
for(j=0;j<N;j++)
for(k=0;k<M;k++)
{p[i][j]=+d[i][k]*a[k][j];
}
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{b[i][j]=e[i][j]-p[i][j];
} /*求雅可比中的B*/
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{f[i][0]=+d[i][j]*b[j][0];
}
/*F是M行1列的矩阵*/
for(i=0;i<M;i++)
{q[i][0]=0;
} /*对初始解赋初值*/
while(m==0)
{for(i=0;i<M;i++)
for(j=0;j<N;j++)
{x[i][0]=+b[i][j]*q[j][0];
x[i][0]=x[i][0]+f[i][0];
}/*迭代求解*/
for(i=0;i<m;i++)
{sum1=+x[i][0]*x[i][0];
sum2=+q[i][0]*q[i][0];
}
sum1=sqrt(sum1);
sum2=sqrt(sum2);
if(abs(sum1-sum2)<n)
{ for(i=0;i<M;i++)
{q[i][0]=x[i][0];
}
}
else m=1;
}
for(i=0;i<M;i++)
{ printf("x[");printf("%d",i);printf("]=");printf("%d",x[i][0]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -