题解 | 使用简化阶梯型矩阵的方法求行列式

使用拉普拉斯展开式的 4x4 矩阵的行列式

https://www.nowcoder.com/practice/5b3331a8000c427f81cbe2aef7af36cd

import numpy as np

def determinant_4x4(matrix) :
    matrix=np.array(matrix,dtype=float)
    Q=[]
    for i in range(4):
        piw=i
        while piw<3 and abs(matrix[piw][i])<1e-10:
            piw+=1
        if piw==3 and abs(matrix[piw][i])<1e-10:
            return 0
        if piw!=i:
            matrix[[i,piw]]=matrix[[piw,i]]
            Q.append(-1)
        Q.append(matrix[i][i])
        matrix[i]=matrix[i]/matrix[i][i]
        for j in range(4):
            if j!=i:
                matrix[j]-=matrix[j][i]*matrix[i]
    s=1
    for k in Q:
        s*=k
    return round(s)
        
# 主程序
if __name__ == "__main__":
    # 输入矩阵
    matrix_inputa = input()

    # 处理输入
    import ast
    matrix = ast.literal_eval(matrix_inputa)

    # 调用函数计算逆矩阵
    output = determinant_4x4(matrix)
    
    # 输出结果
    print(output)

全部评论

相关推荐

03-12 15:35
嘉应学院 Python
快说谢谢牛牛精灵:说不定就是下一个寒武纪!
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务