200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 【应用C】C语言实现行列式与矩阵的运算系统(+源代码)

【应用C】C语言实现行列式与矩阵的运算系统(+源代码)

时间:2020-04-08 11:45:01

相关推荐

【应用C】C语言实现行列式与矩阵的运算系统(+源代码)

文章目录

01 - 行列式和矩阵1.1 - 行列式定义1.2 - 矩阵定义02 - 基本运算2.1 - 行列式基本运算2.2 - 矩阵基本运算03 - 数据结构04 - 结果测试4.1 - 菜单4.2 - 行列式4.3 - 矩阵05 - 源码下载06 - 总结

很久之前的课程小组作业,实际用处不大,因为有Matlab的存在,虽然现在已经不提倡从轮子造起,但是从轮子开始了解是必须的,记录

01 - 行列式和矩阵

1.1 - 行列式定义

行列式是一个数值,表现为有n2个数,排成n行n列的数表

D=∥123456789∥D= \left\| \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{matrix} \right\| D=∥∥∥∥∥∥​147​258​369​∥∥∥∥∥∥​

n个取自不同行不同列的n个元素乘积的代数和称为行列式

∑(−1)ta1p1a2p2⋯anpn\sum {(-1)^t}{a_{1p_1}}{a_{2p_2}}{\cdots}{a_{np_n}} ∑(−1)ta1p1​​a2p2​​⋯anpn​​

1.2 - 矩阵定义

矩阵是一个数表,表现为有m×n{m}\times{n}m×n个数aij{a_{ij}}aij​(i=1,2,⋯,m;j=1,2,⋯,ni=1,2,{\cdots},m;j=1,2,{\cdots},ni=1,2,⋯,m;j=1,2,⋯,n)排成mmm行nnn列,矩阵是一个整体,总是加一个括弧表示

A={123456789}A= \left\{ \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{matrix} \right\} A=⎩⎨⎧​147​258​369​⎭⎬⎫​

02 - 基本运算

不像Matlab这么强大,C语言只实现基本功能就可以,因为再复杂的运算都由基本功能组成

2.1 - 行列式基本运算

1、行列式的值

2、转置行列式

3、行列式中第i行(列)乘以k

4、互换行列式的两行 (列)

5、行列式化为上三角

6、第(i,j)元的代数余子式

7、第j行(列)乘以k后,加到第i行(列)上

8、检查行列式D是否能拆分成D1+D2(行/列)

2.2 - 矩阵基本运算

1、逆矩阵

2、转置矩阵

3、矩阵的秩

4、两个矩阵相乘

5、两个矩阵相加

6、交换矩阵的两行

7、矩阵的某行乘以k

8、常数k与矩阵相乘

9、矩阵化为行阶梯型

10、矩阵化为行最简型

11、矩阵对应的行列式的值

12、矩阵的第i行乘以k,加到第j行

03 - 数据结构

抽象出行列式和矩阵的相似点,构建以下结构体

typedef struct DetOrMar{//通用NuDe con[Defaul_size][Defaul_size];char type;//m-矩阵,d-行列式int row;//行数 int col;//列数 //行列式相关int value;//行列式的值int Aij_value;//代数余子式的值}DorM;

NuDe其实是一个分子分母分开存放的结构体(不知道为什么当初用这个英文,这是躶体的意思,看到结构体后就知道,原来是分子/分母英文缩写的组合nude,奇葩),分子分母分开存放的原因是防止精度丢失,能使用整数运算就不要使用浮点数

typedef struct Elem {int deno;//分母 int nume;//分子 }NuDe;

04 - 结果测试

4.1 - 菜单

数据导入类型选择行列式运算矩阵运算

4.2 - 行列式

D=∥1234234134124123∥D= \left\| \begin{matrix} 1 & 2 & 3 & 4\\ 2 & 3 & 4 & 1 \\ 3 & 4 & 1 & 2 \\ 4 & 1 & 2 & 3 \end{matrix} \right\| D=∥∥∥∥∥∥∥∥​1234​2341​3412​4123​∥∥∥∥∥∥∥∥​

4.3 - 矩阵

A={41−222131−1}A= \left\{ \begin{matrix} 4 & 1 & -2 \\ 2 & 2 & 1 \\ 3 & 1 & -1 \end{matrix} \right\} A=⎩⎨⎧​423​121​−21−1​⎭⎬⎫​

05 - 源码下载

小组课程作业,链接:百度网盘  提取码:xt1m

06 - 总结

实现了行列式和矩阵的基本运算输入比较麻烦,可以改一下文件读入的扫描方式细节有问题,存在内存泄露的问题

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。