#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define max 7 //定义最大的维数7
double a[max][max],b[max],x[max];
double temp;
void enterarray();
void exchange();
void iteratearray();
void showarray();
void showresults();
int i,j,k;
void main()
{
printf("输入矩阵实数(以空格隔开)\n");
/*输入系数矩阵和增广矩阵的元素*/
enterarray();
/*进行简单变换,使对角线上的主元素不为0*/
exchange();
/*使用高斯迭代消元,系数矩阵转化为上三角*/
iteratearray();
/*输出增广矩阵并判断是否有解*/
showarray();
/*反解x并输出*/
showresults();
}
void enterarray()
{
for(i=1;i<=5;i++)
{
printf("第%d行:\t",i);
for(j=1;j<=5;j++)
{
scanf("%lf",&a[i][j]);
}
}
printf("A=\n");
for(i=1;i<=5;i++)
{
for(j=1;j<=5;j++)
printf("\t%.4f ",a[i][j]);
printf("\n");
}
printf("\n");
/*输入常数矩阵*/
for(i=1;i<=5;++i)
{
printf("输入常数b[%d] = ",i);
scanf("%lf",&b[i]);
}
}
void exchange()
{
/*使对角线上的主元素不为0*/
for(j=1;j<5;j++)
{
if(a[j][j]==0)
for(i=j+1;i<=5;i++)
{
if(a[i][j]!=0)
{
/*交换增广矩阵的第i行与第j行的所有元素*/
for(k=1;k<=5;k++)
{
a[i][k]+=a[j][k];
a[j][k]=a[i][k]-a[j][k];
a[i][k]-=a[j][k];
}
b[i]+=b[j];
b[j]=b[i]-b[j];
b[i]-=b[j];
}
continue; //找到第j列第一个不为0的元素即跳回第一层循环
}
}
}
void iteratearray()
{
/*使用高斯迭代消元求解*/
for(j=1;j<=5;j++)
{
/*系数矩阵转化为上三角*/
for(i=j+1;i<=5;i++)
{
temp=a[i][j]/a[j][j];
b[i]=b[i]-temp*b[j];
for(k=1;k<=5;k++)
a[i][k]=a[i][k]-temp*a[j][k];
}
}
}
/*定义函数输增广矩阵*/
void showarray()
{
printf("\n最终增广矩阵矩阵C化为:\n");
printf("C=");
for(i=1;i<=5;i++)
{
for(j=1;j<=5;j++)
printf("\t%.4f",a[i][j]);
printf("\t%.4f",b[i]);
printf("\n");
}
temp=1;
for(i=1;i<=5;i++)
temp*=a[i][i];
printf("\n矩阵的行列式|A|=%.4f\n",temp);
/*判断原线性方程组是否有唯一解*/
if(temp==0)
{
printf("\n该方程组无唯一解\n");
exit(0);
}
}
void showresults()
{
/* 按顺序反代求解x[i](i=n,n-1,n-2,…,2,1)*/
x[5]=b[5]/a[5][5];
for(j=4;j>=1;j--)
{
x[j]=b[j];
for(k=5;k>=j+1;k--)
x[j]=x[j]-x[k]*a[j][k];
x[j]=x[j]/a[j][j];
}
printf("最终求得方程的解为:\n");
for(j=1;j<=5;j++)
printf("x[%d]= %.4f\n",j,x[j]);
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
matrix.rar (1个子文件)
matrix.c 3KB
共 1 条
- 1
资源评论
- harrenming2017-04-23经过修改后,可以使用
- guohy20012014-12-26尽管有些问题,但还是给个赞
zhojhon
- 粉丝: 17
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功