北太天元數(shù)值計算通用軟件的幾個小知識點和用法小技巧
中科大徐老師這學(xué)期正在上數(shù)值分析這門課,推薦學(xué)生使用北太天元數(shù)值計算通用軟件。幾天前,收到徐老師的邀請,商定了3月20日去和學(xué)生講講北太天元軟件的一些使用技巧,在閱讀了幾名學(xué)生的代碼后,我看到了學(xué)生的理論和算法都掌握得很好,不由得為祖國的未來暗暗喝彩。想到指點這些才華橫溢的學(xué)子,我感到誠惶誠恐,忐忑不安。在忐忑中我還是斗膽對代碼做了一些修改,發(fā)現(xiàn)代碼運行的效率還是有所提高。因此,還是在這里班門弄斧一下,和大家分享一些北太天元數(shù)值計算通用軟件的知識點和用法上的小技巧。
? 矩陣? 北太天元默認的數(shù)據(jù)類型是 double matrix,?? 標量是 1x1 double matrix , 因此在編程的時候,盡量使用矩陣的語言來寫算法。
?機器精度? 北太天元的內(nèi)置函數(shù) eps 返回的是機器精度,要注意 1+x 精確地 和 1 相等,如果?? |x| < eps / 2 .
? 降低循環(huán)次數(shù)????? 見我做的小視頻 【北太天元軟件的計時函數(shù)(tic,tok)和循環(huán)加速的另一個例子】
?多用矩陣和向量的操作,少用對分量的循環(huán)
./ .\ .* .^2? 各種內(nèi)置函數(shù),如sin,cos,log 都接受矩陣作為自變量
+? -? .*? ./? 還能自動對矩陣的擴展
如 [ 1? 3 7 ] + [ 2 ; 4 ]? 會得到一個 2x3的矩陣? [? 3 5 9;? 5 7 11]
如? [ 1 2 3] .* [ 1 1 1 ; 2 2 2 ] = [ 1 2 3 ; 2 4 6 ] , 注意這里是 .*? 第一個矩陣自動做了擴展
盡量不用內(nèi)置函數(shù)名作為變量,如下面列出來的tic,tok, find, linspace, sum 等
計時函數(shù)? tic? tok? 見我做的小視頻 【北太天元軟件的計時函數(shù)(tic,tok)和循環(huán)加速的另一個例子】
?find 函數(shù)
linspace, 冒號表達式
?注釋?? 幫助信息, 單行注釋,多行注釋,
?sum?
prod
?ans
nargin, nargout
delay?? (這個目前要加載插件time,加載命令是?load_plugin("time") )
取矩陣的子矩陣
A = rand(3,5);? A(:)
A = 1:10; A = reshape(A, 2,5);
length , size