当前位置: 首页>Python>正文

python中列表的*乘運算,使用python計算行列式

python中列表的*乘運算,使用python計算行列式

說明:python中numpy包本身是已經提供了計算行列的方法,但是運算的時候發現會有差異,比如行列式有一個特性,行列式本身和轉置后的行列式結果是相同的,但是使用numpy包計算后發現結果并不一樣。所以會想著需要重新寫一下

python中列表的*乘運算?在這里,使用的是行列式展開式的方式進行計算的,即把行列式按照展開公式展開然后進行計算

解決方案如下:

一、生成行列式的全排列

二、計算每一種排列的逆

三、n*n行列式展開并求乘積

四、求和

代碼如下:

def arrange(x,y,s):if s > 1:global temp_listtemp_list = [i+j for i in x for j in y]return arrange(temp_list,y,s-1),temp_listelse:return temp_list
def calculate_det(x):x = [str(i) for i in range(len(y))]a,result = arrange(x,x,len(y))results = [list(i) for i in result if len(set(list(i))) == len(y)]# 計算逆的值inverse_value = []for i in range(len(results)):s = 0for j in range(len(results[i])):for k in range(j+1,len(results[i])):if results[i][j] > results[i][k]:s += 1inverse_value.append(s)inverse_cofficient = [1 if i % 2 == 0 else -1 for i in inverse_value]
#     將行列式按照公式展開即可range_list = []for i1 in range(len(results)):temp_list = [str(y[i2][int(i3)]) for i2,i3 in zip(range(len(y)),results[i1])]range_list.append(eval('*'.join(temp_list))*inverse_cofficient[i1])return sum(range_list)if __name__ == '__main__':y = np.array([[3,2,6,8],[2,8,1,2],[3,4,1,5],[9,2,1,7]])result = calculate_det(y)print(result)

寫在后面的話,行列式計算,有多種方式,如果是手算的話,目前更多用的是下三角或上三角法,即通過線性變換,讓行列式變成下三角形的結果,然后對解線進行乘積即可。而在這里,因為是計算機計算,所以采用了行列式展開式的方式進行的計算,當然,使用下三角方法用計算機也是可以實現的,這兩種方法其實是兩種解決方案的思想。一種是把原始數據當成一個字符串對象,然后不停的從其中取數進行構造。使得通過構造的方式將現有對象變換成想要的結果。另一種思想是把原始數據對象當做一個完整的對象,所有的變換通過和別的對象進行運算,然后生成滿足對象的結果。

核心思想:在算法中,進行常規的數據變換,或者格式變換,許多時候,我們會選擇對索引位置進行重新排列,或者按照一定的算法進行重新排列處理,但是我們可以確定的一點是,我們的變換也可以通過運算的方式進行數據變換,讓運算的結果滿足我們的要求,而不是把對象當做字符串對象來處理。

https://www.nshth.com/python/210907.html
>

相关文章:

  • python中列表的乘運算
  • python的list用法
  • python集合里可以有列表嗎
  • python列表的定義
  • python取矩陣的幾行幾列
  • python的list數值運算
  • python定義矩陣
  • python計算矩陣的特征值
  • pygame外星人入侵,python外星人入侵小游戲
  • 用python入侵別人手機,python外星人入侵游戲圖片_Python外星人入侵游戲編程完整版
  • 誰是外星人游戲,20_外星人游戲項目03——
  • python游戲腳本開發,python 外星人游戲怎么打開_Python外星人入侵游戲開發—創建游戲窗口
  • 用python入侵別人手機,python小游戲----外星人入侵
  • python游戲腳本開發,python 外星人游戲下載大全_【Python】Python制作外星人入侵小游戲
  • python播放聲音模塊,python外星人入侵添加音效_python外星人入侵游戲打包
  • python飛機大戰源碼,基于pygame的飛船大戰外星人游戲
  • python 外星人入侵游戲 學習總結 以及完整代碼
  • 有外星人入侵嗎,python外星人入侵游戲代碼_python外星人入侵 游戲源碼
  • python飛機大戰源碼,python項目——外星人入侵游戲
  • 純python開發的大型游戲,Python之外星人游戲(帶源碼和圖片資源)項目
  • python編程書籍推薦,培訓python排行榜
  • bilibili播放量排行榜,b站每日排行榜爬蟲
  • python爬蟲爬取網頁表格數據,python爬蟲爬取歌曲_python爬蟲實戰:爬取全站小說排行榜
  • 爬蟲爬取網站之家,【Python爬蟲】用Python爬取娛樂圈排行榜數據
  • 可以用python寫網頁嗎,有關python的比賽_用 Python 寫一個 Kaggle 比賽排行榜的爬蟲
  • python django框架,python開源框架排行_Python開源項目最新月榜TOP 10
  • 用python刷網頁瀏覽量,用Python獲取公眾號閱讀數、點贊數。
  • 用python做一個簡單的游戲,python有什么好玩的書_史上最全的Python書排行榜|你想知道的都在這里
  • python庫大全一覽,總結!Github年度最強Python庫排行榜
  • python b站 排行_Python爬蟲抓取B站小視頻排行榜,新手也可以跟著做哦!
  • ubuntu運行安卓app,ubuntu AndroiStudio 中 外設(手機、平板) 無法使用
  • ad軟件怎么將原理圖生成pcb,AD20怎樣生成PCB文件??
  • 基于python的影評數據分析,python爬取《你好, 李煥英》豆瓣評論數據
  • 測試顯卡性能的工具,技嘉顯卡性能測試軟件,你好六啊!GTX 1660 Ti深度測試:升吧
  • 捕獲異常的方法有,Scala系列20:Scala中異常捕獲與拋出異常
  • 通過thread類創建線程,【0805作業】繼承Thread類創建線程,輸出20次數字,“你好”,線程名
  • ip靜態,Centos7 配置靜態 IP 地址
  • ip靜態,Centos7 安裝,配置靜態IP