#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main()
{
int n;
double a[10][10],x[10];
printf("请输入要解的线性方程组的系数矩阵的阶数:\n");
scanf("%d",&n);
printf("请输入扩展矩阵:\n"); //对数组初始化,输入系数
for(int i=0; i<n; i++)
for(int j=0; j<n+1; j++)
scanf("%lf",&a[i][j]);
double sum=0;
int flag=1;
for(int i=0; i<n; i++)
{
sum=0;
for(int j=0; j<n; j++)
sum+=a[i][j];
if(2*a[i][i]<=sum)
{
flag=0;
break;
}
}
if(flag==1)
printf("该线性方程组为主对角占优");
for(int i=0; i<n; i++)
x[i]=0;
do
{
int i;
for(i=0; i<n; i++)
{
sum=0;
for(int j=0; j<n; j++)
sum+=a[i][j]*x[j];
x[i]=x[i]+(a[i][n]-sum)/a[i][i];
}
i--;
if(fabs((a[i][n]-sum)/a[i][i])<=0.000001)
break;
}while(1);
printf("x=(");
for(int i=0; i<n-1; i++)
printf("%lf,",x[i]);
printf("%lf)",x[n-1]);
return 0;
}
/*
3
8 -3 2 20
4 11 -1 33
2 1 4 12
*/
#include<math.h>
#include<stdlib.h>
int main()
{
int n;
double a[10][10],x[10];
printf("请输入要解的线性方程组的系数矩阵的阶数:\n");
scanf("%d",&n);
printf("请输入扩展矩阵:\n"); //对数组初始化,输入系数
for(int i=0; i<n; i++)
for(int j=0; j<n+1; j++)
scanf("%lf",&a[i][j]);
double sum=0;
int flag=1;
for(int i=0; i<n; i++)
{
sum=0;
for(int j=0; j<n; j++)
sum+=a[i][j];
if(2*a[i][i]<=sum)
{
flag=0;
break;
}
}
if(flag==1)
printf("该线性方程组为主对角占优");
for(int i=0; i<n; i++)
x[i]=0;
do
{
int i;
for(i=0; i<n; i++)
{
sum=0;
for(int j=0; j<n; j++)
sum+=a[i][j]*x[j];
x[i]=x[i]+(a[i][n]-sum)/a[i][i];
}
i--;
if(fabs((a[i][n]-sum)/a[i][i])<=0.000001)
break;
}while(1);
printf("x=(");
for(int i=0; i<n-1; i++)
printf("%lf,",x[i]);
printf("%lf)",x[n-1]);
return 0;
}
/*
3
8 -3 2 20
4 11 -1 33
2 1 4 12
*/