【Mathematica進階系列】如何高效地給矩陣賦值?

Tags: 進階, 矩陣,

Mathematica是著名的科學數值編程軟件,它豐富的函數庫和直觀化的操作方式給我們帶來了極大的便利,本文就講述如何在mathematica中高效地給矩陣賦值。

【Mathematica進階系列】如何高效地給矩陣賦值

工具/原料

Mathematica

方法/步驟

首先我們新建一個Mathematica的nb文件,本文以3x3矩陣為例,首先創建一個空的矩陣元素mma={},現在我們需要對mma的每一個元素依次賦值,從一般編程的思維出發,我們將選擇循環結構依次對矩陣每個元素賦值,該方法如圖所示,我們需要在一個循環結構中嵌套一個循環結構,本文選擇了在While中嵌套For循環,從理論上分析,While循環和For循環的時間效率是等效的;

【Mathematica進階系列】如何高效地給矩陣賦值

在得到正確結果後,我們可以來看一下這款程序的運行效率,只需要在循環結構的結束“]”之後加上“;//AbsoluteTiming”,然後同時按下Shift+Enter鍵運行該段代碼,即可得到程序運行時間(為了更好地到時間差別,這次我將矩陣元素的量改成了300,而步驟一中是10);

【Mathematica進階系列】如何高效地給矩陣賦值

下面我門採用Mathematica特有的“Table”函數對矩陣元素進行賦值,這次,我們新建了一個矩陣mbt,直接用Table函數給其賦值可以直接省略初始化mbt的步驟,直接在輸入界面輸入“mbt = Table[x*y, {x, 10}, {y, 10}]”即可,結果和步驟1完全一樣,是不是非常方便,非常簡潔,具體參見附圖;

【Mathematica進階系列】如何高效地給矩陣賦值

下面我們再來看看Table函數的時間效率,同樣在函數的結束“]”之後加上“;//AbsoluteTiming”,然後運行代碼,我們就可以看到Table函數運行所需的時間(同樣,矩陣元素量被改成了300);

【Mathematica進階系列】如何高效地給矩陣賦值

最後,我們來比較一下兩種方法的時間效率,通過放在一起比較,我們發現,Table函數的時間效率非常之高,僅有循環結構的1/10,這在大數據運算時候是非常高效的,比如說循環結構用了10個小時,而Table函數就只需要1個小時,節約了極大的時間,這個高效的矩陣賦值同時也給代碼書寫帶來了很大的方便,使得代碼的書寫量也大大減小,出錯率明顯降低,所以,日後若是在Mathematica中用到循環結構的時候,先想一想,是不是可用Table函數代替。

【Mathematica進階系列】如何高效地給矩陣賦值

注意事項

Table開頭要大寫,Mathematica所有函數開頭都是大寫,要謹記

相關問題答案