Python计算n阶行列式的值

本文将使用Python编写程序计算n阶行列式的值,不借助第三方库;

n阶行列式的定义

一个n阶行列式可以简单定义为:

Python求n阶行列式的值

其中 p1 p2 p3 ... pn 为自然数 1,2,...,n 的一个排列;t 为这个排列的逆序数;

计算n阶行列式

程序可计算1~n阶行列式:

def permute(nums):
    #生成n个元素的全排列
    length = len(nums)

    permutations = []

    def _permute(index=0):

        if index == length:
            permutations.append(nums[0:length])
        
        for i in range(index,length):
            nums[i],nums[index] = nums[index],nums[i]
            _permute(index+1)
            nums[i],nums[index] = nums[index],nums[i]
            
    _permute()

    return permutations


def inversion_number(nums):
    #计算排列的逆序数
    count = 0
    for i in range(len(nums)):

        for j in range(i):

            if nums[j] > nums[i]:

                count += 1

    return count

def calculate(det):
    #计算n阶行列式的值

    if not det:#没有元素
        return 0

    if len(det) == 1:#一阶行列式直接返回值
        return det[0]
    
    #生成 1,..., n的全排列
    permutations = permute([i for i in range(1,len(det)+1)])

    result = 0

    for p in permutations:
        #t为逆序数
        t = inversion_number(p)
        product = (-1)**t
        i = 0
        for pn in p:
            product *= det[i][pn-1] #连乘
            i+=1

        result += product #连加

    return result


A = []
A.append([1]) #1阶行列式
A.append(
    [
        [1,2],
        [3,4]
    ]) #2阶行列式

A.append(
    [
        [1,2,3],
        [4,5,6],
        [7,8,9]
    ]) #3阶行列式

for det in A:
    print("Input:")
    for i in det:
        print(i)
    print("value:",calculate(det),"\n")

运行效果

Input:
1
value: 1

Input:
[1, 2]
[3, 4]
value: -2

Input:
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
value: 0

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/the-nth-order-determinant-in-python.html

分类: 计算机技术
推荐阅读:
SQL删除数据库 如果要删除现有的数据库,则可以使用DROP DATABASE语句;
Kali系统和虚拟机镜像的默认账号密码 通常,Kali的默认账号密码为 root/toor,但虚拟机镜像默认的账号密码却不一样,通常为 kali/kali;
Python 实现哈希表 哈希表是一种数据结构,其中数据元素的地址或索引值是从哈希函数生成的。在Python中,Dictionary数据类型就是哈希表的实现。
Golang捕获Ctrl+C的系统信号并作出响应 通常,当操作系统要停止你的进程时,会向你的进程发送信号,如果你需要在进程结束前处理一些事务,那么你需要捕获这些信号;
Python字符串替换函数replace() replace()是Python中的一个内置函数;可通过replace()函数将字符串中的一部分替换成另一部分,并返回一个新的副本;
Linux下查看端口是哪个程序在使用 在Linux系统下,如果你想知道某个端口是哪些程序在使用,你可以使用这一条命令来查看: