求出矩阵的值以及输出逆矩阵,英语不好,略拗口。

上代码:

#include<stdio.h>
#include<string.h>
#include<math.h>
int InitialMatrix[110][110];//初始矩阵,即输入的矩阵
int CurrentMatrix[110][110];//当前 矩阵 多用来表示当前余子式//打印矩阵matrix
void print(int matrix[][110], int n)//打印矩阵
{int j;for (int i = 1; i <= n; i++){for (j = 1; j < n; j++)printf("%d ", matrix[i][j]);printf("%d\n", matrix[i][j]);}
}//得到矩阵matrix第numi行第numj列的余子式 并存入到CurrentMatrix中
void GetCurrentMatrix(int numi, int numj, int matrix[][110], int MatrixSize)
{//tempMatrix为临时矩阵int tempMatrix[110][110];//先全部置为1for (int i = 0; i < MatrixSize + 10; i++){for (int j = 0; j < MatrixSize + 10; j++)tempMatrix[i][j] = 1;}for (int i = 1; i <= MatrixSize - 1; i++)//求余子式矩阵 {for (int j = 1; j <= MatrixSize - 1; j++){if (i >= numi&&j < numj)tempMatrix[i][j] = matrix[i + 1][j];else if (i >= numi&&j >= numj)tempMatrix[i][j] = matrix[i + 1][j + 1];else if (i < numi&&j >= numj)tempMatrix[i][j] = matrix[i][j + 1];else if (i < numi&&j < numj)tempMatrix[i][j] = matrix[i][j];}}//临时矩阵tempMatrix赋值给 当前矩阵CurrentMatrixfor (int i = 0; i <= MatrixSize - 1; i++){for (int j = 0; j <= MatrixSize - 1; j++)CurrentMatrix[i][j] = tempMatrix[i][j];}
}//求当前行列式为CurrentMatrix时,CurrentMatrix的值。
int GetMatrixValue(int MatrixSize)
{int matrix[110][110];//赋值给matrix  交给matrix去计算 防止破坏CurrentMatrixfor (int i = 1; i <= MatrixSize; i++){for (int j = 1; j <= MatrixSize; j++)matrix[i][j] = CurrentMatrix[i][j];}//一阶二阶 行列式求值if (MatrixSize == 2)return matrix[1][1] * matrix[2][2] - matrix[1][2] * matrix[2][1];else if (MatrixSize == 1)return matrix[1][1];else//高阶行列式求值{int Matrixvalue = 0;//CurrentMatrix的值for (int i = 1; i <= MatrixSize; i++){GetCurrentMatrix(1, i, matrix, MatrixSize);//得到第一行 第i列 的 当前余子式 CurrentMatrix if (i % 2 == 1)//因为 是 行项为1 所以 列项i为奇数时  逆序数为偶数Matrixvalue += matrix[1][i] * GetMatrixValue(MatrixSize - 1);elseMatrixvalue -= matrix[1][i] * GetMatrixValue(MatrixSize - 1);}return Matrixvalue;}
}
int gcd(int m, int n)//求逆矩阵时约分
{if (m < n)gcd(n, m);if (n == 0)return m;elsereturn gcd(n, m%n);
}//打印当前两个值相除得到的最简分数
void final(int n, int m)
{if (n*m < 0){printf("-");final(fabs(n), fabs(m));return;}//printf("%d %d /%d\n",n,m,gcd(n,m));if (m == 1)printf("%d\t", n);else if (n%m == 0)printf("%d\t", n / m);elseprintf("%d/%d\t", n / gcd(n, m), m / gcd(n, m));
}
int main()
{while (1){int MatrixSize = 0;//矩阵的sizeprintf("please input the determinant`s size:\n");//输入矩阵的规格 scanf("%d", &MatrixSize);//初始数组 全部 置为 1for (int i = 0; i < MatrixSize + 10; i++){for (int j = 0; j < MatrixSize + 10; j++)InitialMatrix[i][j] = 1;}printf("please input the determinant:\n");//输入矩阵 for (int i = 1; i <= MatrixSize; i++){for (int j = 1; j <= MatrixSize; j++){scanf("%d", &InitialMatrix[i][j]);CurrentMatrix[i][j] = InitialMatrix[i][j];//CurrentMatrix即 为当前矩阵 }}printf("the value of the determinant is:\n");int MatrixValue = GetMatrixValue(MatrixSize);//矩阵的值 printf("ans is %d\n", MatrixValue);int TransposeMatrix[110][110];//转置行列式for (int i = 1; i <= MatrixSize; i++)//求转置行列式 {for (int j = 1; j <= MatrixSize; j++){TransposeMatrix[i][j] = InitialMatrix[j][i];CurrentMatrix[i][j] = TransposeMatrix[i][j];}}printf("Transpose the determinant is:\n"); //转置矩阵 printf("the value of the determinant is:\n"); //转置矩阵的值 print(TransposeMatrix, MatrixSize);int TransposeMatrixValue = GetMatrixValue(MatrixSize);printf("%d\n", TransposeMatrixValue);if (TransposeMatrixValue == 0){printf("this matrix dont have inverse matrix!!!\n");continue;//矩阵值为0,无逆矩阵 }printf("***************\n");printf("inverse matrix is:\n");//输出逆矩阵 for (int i = 1; i <= MatrixSize; i++){for (int j = 1; j <= MatrixSize; j++){GetCurrentMatrix(i, j, TransposeMatrix, MatrixSize);//得到转置矩阵第i行第j列的 余子式 存入到CurrentMatrix里边if ((i + j) % 2 == 0)final(GetMatrixValue(MatrixSize - 1), MatrixValue);elsefinal(-1 * GetMatrixValue(MatrixSize - 1), MatrixValue);}printf("\n");}}
}

C语言 n*n矩阵求值及求逆矩阵相关推荐

  1. c语言逆值,C语言 n*n矩阵求值及求逆矩阵

    求出矩阵的值以及输出逆矩阵,英语不好,略拗口. 上代码: #include #include #include int map1[110][110],i,j,k,l,m,n,p,vis[110][11 ...

  2. java求矩阵_java实现的n*n矩阵求值及求逆矩阵算法示例

    本文实例讲述了java实现的n*n矩阵求值及求逆矩阵算法.分享给大家供大家参考,具体如下: 先来看看运行结果: java版的写出来了,用的跟c语言相同的算法,然后看看能不能以后加个框做成程序: imp ...

  3. java n*n矩阵求值及求逆矩阵

    java版的先写出来了,用的跟c语言相同的算法,然后看看能不能以后加个框做成程序: import java.math.*; import java.util.*; import java.text.* ...

  4. java求矩阵的逆矩阵_java n*n矩阵求值及求逆矩阵

    展开全部 import java.math.*; import java.util.*; import java.text.*; public class matrix { static int ma ...

  5. c语言程序设计报告表达式求值,表达式求值C语言实验报告

    表达式求值实验报告 李一鹏 PB12001076 数学系 1. 实验题目:表达式求值 2. 实验目的:熟悉栈与队列 3. 实验内容: 话说令狐冲只告诉东方不败:"东方姑娘你会永远活在我的心中 ...

  6. 5.2 matlab多项式计算(多项式的四则运算、求导、求值、求根)

    1.多项式的表示 在MATLAB中创建多项式向量时,注意三点: (1)多项式系数向量的顺序是从高到低. (2)多项式系数向量包含0次项系数,所以其长度为多项式最高次数加1. (3)如果有的项没有,系数 ...

  7. matlab多项式的求值,多项式求值的MATLAB实现

    公茂果老师的课件中,给出了四种多项式求值的算法,下面给出代码示例: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %E-mail: [email protected] ...

  8. 用Python对数学函数进行求值、求偏导

    from sympy import *# x = Symbol("x") # y = diff(x**3+x, x) # print(y) # result = y.subs('x ...

  9. 12 More Effective C++—条款16/17 (2/8原理与延缓求值)

    1 "2/8"原理 二八原理指一件事情的20%需要投入80%的精力来做,即要分清主次点.这种情况在程序编写的时候尤为突出.关键性能点.重要逻辑代码一般都是集中在小部分区域,而这部分 ...

最新文章

  1. 有了这个工具,不执行代码就可以找PyTorch模型错误
  2. sql 服务器实例怎样显示,如何查看sql数据库的服务器名
  3. BZOJ3569: DZY Loves Chinese II(线性基构造)
  4. gan semi conductor
  5. 关于 Node.js 应用里使用 winston 进行日志记录的最佳实践
  6. Python Socket编程初探
  7. 成都市交委与摩拜科技联手 助推智慧城市建设
  8. 软考—软件设计师(中级)第5版
  9. python 拼音 四线格_拼音四线三格中的写法示意及书写注意事项
  10. 只需45秒,Python 给故宫画一组手绘图!
  11. 摘:Windows系统内存计数器理解解析_备忘录_51Testing软件测试网...
  12. 桌面计算机未响应怎么办,电脑卡死程序未响应的解决方法步骤详解
  13. [pwn]堆:fastbin attack详解
  14. 大学生面试:教你用“一切细节”征服HR
  15. Java 多文件压缩为ZIP
  16. 【论文导读】- E-LSTM-D: A Deep Learning Framework for Dynamic Network Link Prediction(动态网络链接预测)
  17. codemirror6教程
  18. 私有化部署VideoTogether一起看视频
  19. 【Unity 3D】使用EasyAR实现单图识别的AR增强现实功能(附实现步骤)
  20. 【例10.4】从键盘输入10个学生的有关数据,然后把它们转存到磁盘文件上去。

热门文章

  1. ZZ_MODIFIED_GEEBINF 不可用
  2. linux下tmux
  3. Go 语言编译过程概述
  4. 跟我学Spring Cloud(Finchley版)-04-服务注册与服务发现-原理剖析
  5. 模板方法(Template)模式
  6. 让敏捷交付优秀的软件
  7. Debian7桌面屏蔽图标和右键菜单的解决方法。
  8. 转 批处理 %~dp0的意义
  9. 第 19 章 保护方法调用
  10. AD 组策略应用与排错(1应用)