python3.7行列式_python计算行列式

python计算行列式

2017年12月20日 18:27 by wst

数学知识

回过头来再看数学,课本上讲的每一个解题步骤不都是一个算法吗?

突然发现自己学了那么多算法,可是仔细想来,自己又能实现几个呢?

正好在复习行列式,顺便实现下:

# -*- coding:utf-8 -*-

import math

__author__ = "alan.wan"

__email__ = "movingheart000@gmail.com"

def get_son_matrix(df, i, j):

""" Generate matrix that remove line i and column j

:param df: original matrix

:param i: line number

:param j: column number

:return: new matrix

"""

l = len(df)

new_list = [[0 for x in range(l-1)] for y in range(l-1)]

for index in range(l):

for column in range(l):

if index < i and column < j:

new_list[index][column] = df[index][column]

elif index > i and column < j:

new_list[index-1][column] = df[index][column]

elif index > i and column > j:

new_list[index-1][column-1] = df[index][column]

elif index < i and column > j:

new_list[index][column-1] = df[index][column]

return new_list

def calculate_det(df, n=0):

"""Calculate determinant of df

:param df: input matrix

:param n: calculate by line n

:return: results

"""

cl = len(df)

if cl == 2:

return df[0][0] * df[1][1] - df[1][0] * df[0][1]

s = 0

for tl in range(cl):

temp_df = get_son_matrix(df, n, tl)

s += df[n][tl] * math.pow(-1, n+tl+2) * calculate_det(temp_df)

return s

if __name__ == "__main__":

df = [

[5, 3, -1, 2, 0],

[1, 7, 2, 5, 2],

[0, -2, 3, 1, 0],

[0, -4, -1, 4, 0],

[0, 2, 3, 5, 0]

]

print calculate_det(df)

Comment

×

Name

Email address

Comment

Close

Submit

Not Comment!

python计算行列式 2017年12月20日 18:27 by wst 数学知识 回过头来再看数学,课本上讲的每一个解题步骤不都是一个算法吗? 突然发现自己学了那么多算法,可是仔细想来,自己又能实现几个呢? 正好在复习行列式,顺便实现下: # -*- coding:utf-8 -*- import math __author__ = "alan.wan" __email__ = "movingheart000@gmail.com" def get_son_matrix(df, i, j): """ Generate matrix that remove line i and column j :param df: original matrix :param i: line number :param j: column number :return: new matrix """ l = len(df) new_list = [[0 for x in range(l-1)] for y in range(l-1)] for index in range(l): for column in range(l): if index < i and column < j: new_list[index][column] = df[index][column] elif index > i and column < j: new_list[index-1][column] = df[index][column] elif index > i and column > j: new_list[index-1][column-1] = df[index][column] elif index < i and column > j: new_list[index][column-1] = df[index][column] return new_list def calculate_det(df, n=0): """Calculate determinant of df :param df: input matrix :param n: calculate by line n :return: results """ cl = len(df) if cl == 2: return df[0][0] * df[1][1] - df[1][0] * df[0][1] s = 0 for tl in range(cl): temp_df = get_son_matrix(df, n, tl) s += df[n][tl] * math.pow(-1, n+tl+2) * calculate_det(temp_df) return s if __name__ == "__main__": df = [ [5, 3, -1, 2, 0], [1, 7, 2, 5, 2], [0, -2, 3, 1, 0], [0, -4, -1, 4, 0], [0, 2, 3, 5, 0] ] print calculate_det(df) Comment × Name Email address Comment Close Submit Not Comment!
经验分享 程序员 微信小程序 职场和发展