逆矩阵算法三
来源:互联网 发布:淘宝原创设计男装店铺 编辑:程序博客网 时间:2024/05/29 03:33
# include "stdio.h"
# define M 3
void main ( )
{
float MAT[M][2*M];
float MAT1[M][M];
float t;
int i,j,k,l;
/***********************************************/
/*对矩阵进行初始化*/
for(i=0;i<M;i++)
for(j=0;j<2*M;j++)
MAT1[i][j]='\0';
for(i=0;i<M;i++)
for(j=0;j<2*M;j++)
MAT[i][j]='\0';
/*对MAT1矩阵赋初值 */
for(i=0;i<M;i++)
for (j=0;j<M;j++)
scanf("%f",&MAT1[i][j]);
/*打印目标矩阵?*/
printf("原矩阵为:\n");
for (i=0;i<M;i++)
{
for (j=0;j<M;j++)
printf("%5.2f",MAT1[i][j]);
printf("\n");
}
/********************************************/
/*对MAT1矩阵进行扩展,MAT1矩阵添加单位阵,由M*M变成2M*2M矩阵 */
for(i=0;i<M;i++)
for(j=0;j<2*M;j++)
if (j<M) MAT[i][j]=MAT1[i][j];
else if (j==M+i) MAT[i][j]=1;
else MAT[i][j]=0;
/*对M矩阵进行变换,使得前半部分矩阵成为单位阵,则 */
/*后半部分矩阵即为所求矩阵逆阵 */
for(i=0;i<M;i++)
{
/*对第i行进行归一化 */
for (j=0;j<2*M;j++)
for(k=i+1;k<M;k++)
MAT[i][j]=MAT[i][j]+MAT[k][j];
t=MAT[i][i];
for(j=i;j<2*M;j++)
MAT[i][j]=MAT[i][j]/t;
/*对矩阵进行行变换,使得第i 列只有一个元素不为零,且为1*/
for(k=0;k<M;k++)
if(k!=i)
{
t=MAT[i][k];
for (l=i;l<2*M;l++)
MAT[k][l]=MAT[k][l]-MAT[i][l]*t;
}
}
/*将后半部分矩阵即所求矩阵逆阵存入MAT2矩阵。*/
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
MAT1[i][j]=MAT[i][j+M];
printf("\n");
}
/*********************************************/
/*输出所求的逆阵*/
printf("逆阵为:\n");
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
printf("%5.2f",MAT1[i][j]);
printf("\n");
}
}
# define M 3
void main ( )
{
float MAT[M][2*M];
float MAT1[M][M];
float t;
int i,j,k,l;
/***********************************************/
/*对矩阵进行初始化*/
for(i=0;i<M;i++)
for(j=0;j<2*M;j++)
MAT1[i][j]='\0';
for(i=0;i<M;i++)
for(j=0;j<2*M;j++)
MAT[i][j]='\0';
/*对MAT1矩阵赋初值 */
for(i=0;i<M;i++)
for (j=0;j<M;j++)
scanf("%f",&MAT1[i][j]);
/*打印目标矩阵?*/
printf("原矩阵为:\n");
for (i=0;i<M;i++)
{
for (j=0;j<M;j++)
printf("%5.2f",MAT1[i][j]);
printf("\n");
}
/********************************************/
/*对MAT1矩阵进行扩展,MAT1矩阵添加单位阵,由M*M变成2M*2M矩阵 */
for(i=0;i<M;i++)
for(j=0;j<2*M;j++)
if (j<M) MAT[i][j]=MAT1[i][j];
else if (j==M+i) MAT[i][j]=1;
else MAT[i][j]=0;
/*对M矩阵进行变换,使得前半部分矩阵成为单位阵,则 */
/*后半部分矩阵即为所求矩阵逆阵 */
for(i=0;i<M;i++)
{
/*对第i行进行归一化 */
for (j=0;j<2*M;j++)
for(k=i+1;k<M;k++)
MAT[i][j]=MAT[i][j]+MAT[k][j];
t=MAT[i][i];
for(j=i;j<2*M;j++)
MAT[i][j]=MAT[i][j]/t;
/*对矩阵进行行变换,使得第i 列只有一个元素不为零,且为1*/
for(k=0;k<M;k++)
if(k!=i)
{
t=MAT[i][k];
for (l=i;l<2*M;l++)
MAT[k][l]=MAT[k][l]-MAT[i][l]*t;
}
}
/*将后半部分矩阵即所求矩阵逆阵存入MAT2矩阵。*/
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
MAT1[i][j]=MAT[i][j+M];
printf("\n");
}
/*********************************************/
/*输出所求的逆阵*/
printf("逆阵为:\n");
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
printf("%5.2f",MAT1[i][j]);
printf("\n");
}
}
- 逆矩阵算法三
- 逆矩阵算法三
- 算法:三阶矩阵求逆矩阵算法公式
- 算法系列-----矩阵(三)-------------矩阵的子矩阵
- 逆矩阵算法一
- 逆矩阵算法二
- 逆矩阵算法
- 旋转矩阵转化成四元数的三种算法
- 矩阵求逆的算法
- 矩阵求逆算法(Chapter28)
- 矩阵求逆常见算法
- 〖数学算法〗逆矩阵算法
- 〖数学算法〗逆矩阵算法
- 矩阵算法
- 矩阵算法
- 矩阵算法
- 求逆矩阵以及两矩阵相乘的算法实现
- 算法系列-----矩阵(五)-------------矩阵的求逆
- office2010和VC6.0的冲突
- OpenCv学习笔记(五):使用VideoCapture类函数实现视频的播放
- sql常用函数集合
- 逆矩阵算法二
- RubyOnRails 在linux平台安装的过程
- 逆矩阵算法三
- 逆矩阵算法三
- hdu 2059 龟兔赛跑
- C#MDI窗体
- rmq_st实现
- C#退出应用程序
- 使用VMware自带的文件共享功能实现主机与虚拟机中的linux的文件共享
- VI/VIM快捷键
- Top K算法的实现