⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计8932字,阅读大概需要10分钟
🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号:不懂开发的程序猿
⏰个人网站:https://jerry-jy.co/❗❗❗知识付费,🈲止白嫖,有需要请后台私信或【文末】个人微信公众号联系我
人工智能数学与代码实现--线性代数1
人工智能数学与代码实现–线性代数1
实验环境
- Oracle Linux 7.4
- Python 3
实验目的
- 基于Python实现求行列式、代数余子式、逆序数
- 基于Python实现向量的运算以及求向量组的极大线性无关组
知识点
- 行列式、代数余子式以及行列式的性质
- 向量的运算以及向量组的极大线性无关组
实验分析
任务实施过程
一、打开Jupyter,并新建python工程
1.桌面空白处右键,点击Konsole打开一个终端
2.切换至/experiment/jupyter
目录
cd experiment/jupyter
3.启动Jupyter,root用户下运行需加--allow-root
jupyter notebook --ip=127.0.0.1 --allow-root
4.依次点击右上角的 New,Python 3新建python工程
5.点击Untitled,在弹出框中修改标题名,点击Rename确认
二、行列式和代数余子式
1. 行列式
import numpy as np
# 创建三阶行列式
arr = np.array([[4, 6, 8],[4, 6, 9],[5, 6, 8]])
# linalg.det(a)计算数组的行列式。a表示需要进行求解的行列式
print('行列式的解为:', np.linalg.det(arr).round(2))
2. 逆序数
求排列42531逆序数
解 对于排列42531,计算每一个元素的左侧比其大的元素的个数,再求和,具体如下。
(1) 4排在首位,其左边没有比4大的数,逆序数记0。
(2) 2的左边比2大的数有一个(即4),逆序数记1。
(3) 5是最大数,其左边没有比5大的数,逆序数记0。
(4) 3的左边比3大的数有两个(即4,5),逆序数记2。
(5) 1的左边比1大的数有4个(即4,2,5,3),逆序数记4。
所以,排列42531的逆序数为τ(42531)=0+1+0+2+4=7
import numpy as np
def amount(b):
# 计算b中大于b中元素的个数
counts = [np.sum(b[:i] > bb) for i,bb in enumerate(b)]
return np.sum(counts)
a = np.array([4,2,5,3,1])
print('逆序数为:', amount(a))
3. 行列式的性质
import numpy as np
# 创建三阶行列式
D = np.array([[4, 6, 8],[4, 6, 9],[5, 6, 8]])
# 创建行列式的转置矩阵
DT = D.T
print('行列式D的解为:', np.linalg.det(D).round(2))
print('行列式D的转置行列式的解为:', np.linalg.det(DT))
(2)互换行列式的两行(列),行列式变号。
import numpy as np
D = np.array([[4, 6, 8],[4, 6, 9],[5, 6, 8]])
D1 = np.array([[4, 6, 9],[4, 6, 8],[5, 6, 8]])
print('行列式D的解为:', np.linalg.det(