python - 没有numpy的python逆矩阵
问题描述
我无法弄清楚我的代码有什么问题,这令人沮丧。我必须制作逆矩阵函数,我认为我已经完成了。我不知道为什么它不起作用。问题可能与星星有关,在这一步之后,我的矩阵名为 mat 更改为单位矩阵,但为什么呢?在加星之前,它会正常打印我赋予功能的垫子矩阵,但在加星之后,它是一个单位矩阵,我不明白为什么会发生这种情况。这是我所拥有的:
def identity_matrix_convertion(m):
x = m[:]
for i in range(len(x)):
for j in range(len(x[0])):
if i == j:
x[i][j] = 1
else:
x[i][j] = 0
return x
def inverse_matrix(mat):
n = len(mat)
am = mat[:]
show_matrix(mat)
**i = identity_matrix_convertion(am)**
show_matrix(mat)
im = i[:]
ind = list(range(n))
print(len(mat))
if determinant(mat) == 0:
print("This matrix doesn't have an inverse.")
if len(mat) == len(mat[0]):
for i in range(n):
scal = 1.0 / am[i][i]
for j in range(n):
am[i][j] *= scal
im[i][j] *= scal
for k in ind[0:i] + ind[i + 1:]:
current_scal = am[k][i]
for l in range(n):
am[k][l] = am[k][l] - current_scal * am[i][j]
im[k][l] = im[k][l] - current_scal * im[i][j]
return im
so after line **i = identity_matrix_convertion(am)** my mat matrix is changed into identity matrix, but why?
The result is:
1.0 2.0 3.0
2.0 1.0 3.0
4.0 3.0 2.0
The result is:
1 0 0
0 1 0
0 0 1
解决方案
您应该添加以下代码段,而不是x = m[:]
在函数中说明:identity_matrix_convertion()
x = []
for i in m:
arr = [a for a in i]
x.append(arr)
x = m[:]
仍在引用 m 而不仅仅是复制。
推荐阅读
- mysql - 左连接 3 个表错误 #1066
- java - 将节点客户端连接到maven服务器端
- python - Shell 脚本 + Python + 树莓派
- javascript - React Native 文件访问 api:blob.data 在 android 上是“未定义”
- python - Python:哪些类型支持弱引用?
- python - 如何制作一个可以处理单个输入或输入列表的函数
- android - 如何知道手机何时连接到 WiFi 网络
- powershell - 多个-ne过滤器powershell
- r - 如何抑制 #> 由拼凑而成的 plot_layout() 输出
- c++ - 如何从 C++ 处理 C 库中不同大小的类型