zoukankan      html  css  js  c++  java
  • 行列式基本知识及代码实现

    参考链接:https://cloud.tencent.com/developer/article/1594842

    另外参考了张宇的考研视频。

    1. 基本知识

    一、行列式的定义与性质

    1. 几何法定义

    二阶行列式的值为平时四边形的面积。

         

     面积表示如下:

     

     三阶行列式表示的是平行六面体的体积。

    依次类推:n阶行列式表示的就是n个n维向量为邻边的n维图形的体积。

    可以把行列式看作一个算式。

    2. 逆序法定义

    有以下相关点:

    (1)展开后有n!个项;

    (2)每项取自不同行、不同列n个元素的乘积;

    (3)行下标顺序排列后,每项前乘以

    称作j1 j2 ... jn的逆序数。

    逆序数的概念:平时我们说的1 2叫做顺序,4 3就叫做逆序(也就是大的数在前,小的数在后)。

    如t(6 4 1 2 3 5)的逆序数就是8。

    3. 展开法定义

     行列式等于它的任一行(列)的各元素与其对应的代数余子式乘积之和。

    2. python代码实现

    python的numpy库提供了用于进行行列式计算的库函数,使用起来很方便。

    代码实现如下:

     1 # encoding: utf-8
     2 
     3 import os
     4 import numpy as np
     5 from numpy.linalg import det
     6 
     7 
     8 def test_2d_linalg():
     9     D2 = np.arange(4).reshape(2, 2)
    10     val = det(D2)
    11     print (D2)
    12     print (val)
    13 
    14 
    15 def test_3d_linalg():
    16     D3 = np.arange(9).reshape(3, 3)
    17     val = det(D3)
    18     print (D3)
    19     print (val)
    20 
    21 
    22 def test_multiD_linalg():
    23     data = [[1, 2, 3, 4, 5], [2, 2, 2, 1, 1], [3, 1, 2, 4, 5], [1, 1, 1, 2, 2], [4, 3, 1, 5, 0]]
    24     d5 = np.array(data)
    25     print (d5)
    26     print (det(d5))
    27 
    28 
    29 if __name__ == "__main__":
    30 
    31     test_2d_linalg()
    32 
    33     test_3d_linalg()
    34 
    35     test_multiD_linalg()
    View Code

    输出结果:

     1 [[0 1]
     2  [2 3]]
     3 -2.0
     4 [[0 1 2]
     5  [3 4 5]
     6  [6 7 8]]
     7 0.0
     8 [[1 2 3 4 5]
     9  [2 2 2 1 1]
    10  [3 1 2 4 5]
    11  [1 1 1 2 2]
    12  [4 3 1 5 0]]
    13 26.99999999999999

    总结:对如何用工具或代码生成数学公式还不了解,导致这篇博客写得很僵硬。

  • 相关阅读:
    < java.util >-- Set接口
    Codeforces 627 A. XOR Equation (数学)
    Codeforces 161 B. Discounts (贪心)
    Codeforces 161 D. Distance in Tree (树dp)
    HDU 5534 Partial Tree (完全背包变形)
    HDU 5927 Auxiliary Set (dfs)
    Codeforces 27E. Number With The Given Amount Of Divisors (暴力)
    lght oj 1257
    Codeforces 219D. Choosing Capital for Treeland (树dp)
    Codeforces 479E. Riding in a Lift (dp + 前缀和优化)
  • 原文地址:https://www.cnblogs.com/mrlayfolk/p/12688364.html
Copyright © 2011-2022 走看看