行列式就是特殊的矩阵,通过Python3对其进行求解时,我们可以用Numpy库中的linalg.det()函数。
我们这里以n==3时为例。但在一般题目中,测试数据是这样输入的:
1 2 3
4 5 6
7 8 8
这里给出两种输入方法:
首先是第一种输入方法,先构造一个n*n的空矩阵
array = [[0]*n for i in range(n)]
这里我们可以把上述给出的三阶行列式看作三行字符串,对每行字符串用split()函数进行处理,存储到一个列表中,再通过pop()函数将列表中的元素从前到后依次输入矩阵的每一行中,代码如下:
count=0
while count != n:
s_list = (input()).split()
for i in range(n):
array[count][i] = int(s_list.pop(0))
count += 1
其次是第二种输入方法,其中运用到了Numpy库中的reshape()方法,首先构造一个空列表
list = []
然后将数据一次性全部输入
for i in range(n):
s_list = (input()).split()
for j in range(n):
list.append(int(s_list.pop(0)))
array = np.reshape(list, (n, n))
需要注意的是,新构建的列表中的元素都是str型,需要通过强制转化将列表中的元素转化为int型,从而存储在之前构建的array列表中。
现在,我们已经得到了一个完整的三阶行列式,直接用linalg.det()函数对其进行求值即可。
print(np.linalg.det(array))