python計算行列式
2023年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!
矩陣1行列式
在一次模擬中,一道數列題目p1939矩陣加速直接30分,異常悲傷 3 於是乎等著老師講了矩陣 n階行列式的定義 過於複雜,懶得寫上來?1.行列式a中某行 或列 用同一數k乘,其結果等於ka。2.行列式a等於其轉置行列式at at的第i行為a的第i列 3.若n階行列式 ij 中某行 或列 行列式則 i...
python之行列式
人活著不是單靠食物。聖經 1.對於乙個 矩陣 均可對應乙個標量 a 它的值將告訴我們矩陣是否為非奇異的。2.令 ai j 為一n n矩陣,並用mi j表示刪除a中ai j的行和列得到的 n 1 n 1 矩陣,矩陣mi j的行列式稱為ai j的子式,定義ai j的余子式aij為aij 1 i j de...
1 行列式的定義
對於排列p1 p2 p3 p4 p5.pn,我們把排列在pi前面且比pi大的數的個數ti稱為這個排列的逆序數。把這個排列中各數的逆序數之和稱為這個排列的逆序數。如 132 1的逆序數為0 3的逆序數為0 2的逆序數只有3 132 這個排列的逆序數為 0 0 1 逆序數為奇數的排列稱為奇排列 逆序數為...