王福來
浙江財(cái)經(jīng)學(xué)院數(shù)學(xué)與統(tǒng)計(jì)學(xué)院 浙江杭州 310018
☆課程建設(shè)與實(shí)踐教學(xué)☆
數(shù)學(xué)建模優(yōu)化程序設(shè)計(jì)與數(shù)學(xué)原理的綜合運(yùn)用
王福來
浙江財(cái)經(jīng)學(xué)院數(shù)學(xué)與統(tǒng)計(jì)學(xué)院 浙江杭州 310018
從符號與數(shù)值的轉(zhuǎn)化、同余映射中的周期長度及分階段執(zhí)行程序等3個方面,以實(shí)際例子研究了如何在實(shí)踐中運(yùn)用數(shù)學(xué)原理來優(yōu)化程序設(shè)計(jì)、節(jié)約運(yùn)行時間,達(dá)到利于解決數(shù)學(xué)建模問題的目標(biāo)。
數(shù)學(xué)建模;優(yōu)化程序設(shè)計(jì);數(shù)學(xué)原理
數(shù)學(xué)建模中程序設(shè)計(jì)與數(shù)學(xué)原理的綜合運(yùn)用往往直接涉及實(shí)踐中目標(biāo)能否實(shí)現(xiàn)。數(shù)學(xué)建模中經(jīng)常涉及程序的編制,如果程序的編制過于復(fù)雜,往往會使系統(tǒng)運(yùn)行時間過長,甚至無法運(yùn)行,嚴(yán)重妨礙數(shù)學(xué)建模問題的解決。其中一個主要的原因是程序設(shè)計(jì)中沒有盡量考慮用數(shù)學(xué)原理來優(yōu)化程序,使程序得到簡化、優(yōu)化。
筆者分別從3個方面來論述如何用數(shù)學(xué)原理優(yōu)化程序設(shè)計(jì):(1)通過符號與數(shù)值的轉(zhuǎn)化以有效確定序列的大小及距離;(2)根據(jù)數(shù)論知識解決同余映射中周期長度對初值的依賴性;(3)分階段執(zhí)行程序以驗(yàn)證程序的靈敏性或系統(tǒng)的穩(wěn)定性。
1.1 比較子序列大小的問題
我們知道數(shù)學(xué)模型中經(jīng)常要處理一些符號問題。如在Lorenz映射中,人們?yōu)榱擞?jì)算復(fù)雜度、排列熵等指數(shù),經(jīng)常利用符號動力學(xué)方法得到一列符號數(shù)據(jù),這時往往需要比較子序列的大小。它的比較方式是,任給兩個符號序列,它們的大小排序?yàn)椋?/p>
這里, ∑為兩個符號序列的公共字頭。
這個比較在程序設(shè)計(jì)時是較為方便的,如果把它們先轉(zhuǎn)化為二進(jìn)制數(shù)據(jù)則更能節(jié)省時間。但另一些情況下就不會這么簡單。例如,投擲硬幣實(shí)驗(yàn)出現(xiàn)正面、反面,得到一個隨機(jī)序列,如001011101……,如果簡單地把符號與十進(jìn)制或二進(jìn)制數(shù)值等同,這是沒有意義的。但在數(shù)學(xué)建模中有時我們?nèi)匀豢衫梅柵c數(shù)值的轉(zhuǎn)化關(guān)系達(dá)到優(yōu)化程序設(shè)計(jì)的目的。
為了計(jì)算兩個點(diǎn)12( )xx…與12( )yy… 間的距離,一般的文獻(xiàn)采用如下兩種距離定義方式:
以上兩個式子都表明,兩個符號序列,如{a1a2… am}與{b1b2… bm},前面符號重復(fù)得越多,則兩個序列之間的距離越近。但若按照這種距離公式直接比較兩個子序列的每個符號,則會占用太多的計(jì)算機(jī)機(jī)時,甚至是不可能完成的。
現(xiàn)在我們采用下面的數(shù)學(xué)處理方法,則會兼顧到這兩方面,即既可以保留原來的順序關(guān)系,又可以在程序上(用Matlab語言)節(jié)約計(jì)算機(jī)機(jī)時。
方法是:
Step1:用num2str()函數(shù)把符號串{a1a2… am}轉(zhuǎn)為字符串{a1a2… am},如num2str(1010)=1010,等式右邊的1010不再是符號而是二進(jìn)制字符串。
Step2:用bin2dec()函數(shù)將Step1中的二進(jìn)制數(shù)據(jù),設(shè)為xi(i=1,2,…,n) 轉(zhuǎn)化為十進(jìn)制的數(shù)據(jù)yi(i=1,2,…,n)。
它的數(shù)學(xué)原理是:原來的序列,如{1 011},{1 001},{1 010},雖然它們之間并無順序關(guān)系,但賦予了順序關(guān)系后,并不妨礙原來的距離關(guān)系。這樣就利于程序執(zhí)行了,顯然這種方法可以大量節(jié)約程序的機(jī)時。
1.2 同余映射中周期長度的問題
密碼學(xué)中經(jīng)常用同余映射(4)來模擬同余映射(5),以獲得類似于(4)的混沌軌道:
同余映射(5)在 z> 1時為混沌映射,且李雅普諾夫指數(shù)為lnz。(l0,z,m)稱作密鑰。對每一個特定的數(shù)字混沌映射,都需要利用數(shù)論和遍歷性理論等專門的數(shù)字工具進(jìn)行獨(dú)立的研究。例如,對于映射(4),當(dāng) z= 2且m= 2k?1時周期 P(m)取得最小值 P(m )= [l nln m]+1;當(dāng)m為素?cái)?shù)且z為一個乘法群的生成元時,P(m)取得最大值 m? 1;而當(dāng)m為其他數(shù)時,P(m)的典型值為多少卻不得而知。事實(shí)上,當(dāng)(l0,z,m)分別取(37,6,3989),(37,29,3989),(37,2,3989)時,得到的最長周期的軌道長分別為997,1994,3998,而不是都為 P(m )= m?1。因此用文獻(xiàn)[3,4]的方法生成的周期軌道有時不夠長,周期軌道長度變化較大,這是生成偽隨機(jī)序列的主要缺點(diǎn)。另一方面,m越大,則素?cái)?shù)分布的密度越小。這往往使m取得相當(dāng)大,而這使得計(jì)算機(jī)達(dá)不到要求,某些程序無法執(zhí)行,也使得作為參數(shù)空間的密鑰(l0,z,m )非常有限,給通信密碼造成不利。事實(shí)上在程序編制時,只要加入一些數(shù)學(xué)思想則可以完全避免這個問題,即使得對任意模為m(m為素?cái)?shù),m > 2)的同余映射(4)都可以構(gòu)造出相應(yīng)的長度為 m?1的不穩(wěn)定周期軌道。具體步驟是:
Step1:對任意素?cái)?shù)m和任意整數(shù)z(z ≥ 2),任取l0(2 ≤ l0≤ m ? 1),由(4)生成集合 A0;
Step2:若 A0= {1 ,2,… ,m ?1},則已實(shí)現(xiàn)目標(biāo);否則取{1 ,2,… ,m ?1}A0中的最小數(shù)作為l1,回到Step1。設(shè)由Eq.4生成集合為 A1。
Step3:重復(fù)執(zhí)行Step1 和Step2直到第n步產(chǎn)生的集合A0∪A1∪…∪An= {1,2,… ,m ?1},則A0∪ A1∪ … ∪An的 長度必為 m?1。
上述步驟的數(shù)學(xué)原理是: A0,A1,… ,An的任兩個集合必不相交,因?yàn)榉駝t由數(shù)論中的同余理論,這兩個集合是相同的,這與Step1與Step2的設(shè)置相矛盾。
1.3 分階段執(zhí)行程序
執(zhí)行一個復(fù)雜的程序(為表達(dá)方便,這里稱為總程序)時,往往需要更改其中的參數(shù)空間的一個或幾個參數(shù)反復(fù)運(yùn)行,以檢測系統(tǒng)的穩(wěn)定性、模型的靈敏性或數(shù)據(jù)的某些特征。這時會遇到兩種情況:(1)有些程序的子模塊是不變的,反復(fù)運(yùn)行是沒有必要的,占據(jù)了較多計(jì)算機(jī)機(jī)時;(2)里面有隨機(jī)生成函數(shù),每次運(yùn)行它都會自動生成新的數(shù)據(jù),而更改的參數(shù)又需要在與前一次不變的隨機(jī)數(shù)下運(yùn)行,這就達(dá)不到檢驗(yàn)的目的。
解決這兩個問題的最好方法是分階段執(zhí)行程序,即分兩個或多個子程序執(zhí)行,具體來說,分下面兩個步驟:
Step1:將只生成數(shù)據(jù)而不需要更改參數(shù)的子程序(一般是總程序的前部分,記為ProgramⅠ)單獨(dú)執(zhí)行;將生成的變量保存起來,如將生成的數(shù)據(jù)集合設(shè)為A,再將A保存到某個根目錄下,語句是:save('E:mydata1. mat','A')。當(dāng)然有多個數(shù)據(jù)集合,可保存多次。
Step2:另編輯一個程序,在程序的開頭用語句load(' E:mydata1.mat ')將ProgramⅠ中的變量下載,并將總程序的其余部分置于其后。這樣的形成的程序記為Program Ⅱ。于是要更改參數(shù),則只需要更改ProgramⅡ中的參數(shù)就可以。
通過實(shí)例說明了編制程序要考慮到實(shí)踐中可行性問題。這方面的例子還可以參考筆者的文章[5]。在具體的建模中要養(yǎng)成將數(shù)學(xué)原理運(yùn)用到程序設(shè)計(jì)中去的思維習(xí)慣,不僅可節(jié)約時間,使程序可以運(yùn)行,同時也提高了程序的質(zhì)量,利于修改和進(jìn)一步編輯,以達(dá)到實(shí)踐的目標(biāo)。
[1] 羅衛(wèi)民,李昌興,史克剛.“數(shù)學(xué)實(shí)驗(yàn)”與“數(shù)學(xué)建?!闭n程教學(xué)改革[J].高等工程教育研究,2005,6:110~112
[2] 李國斌.微分方程解實(shí)際問題的探討[J].高等教育研究,2009,24(2):62~63
[3] Sánchez S, Criado R.and Vega C. A generator of pserdo-random numbers sequences with a very long period. Mathematical and Computer Modeling. 2005, 42(7):809~816
[4] 王蕾,汪芙平,王贊基.一種新型的混沌偽隨機(jī)數(shù)發(fā)生器[J].物理學(xué)報,2006,55:3964~3975
[5] Wang Fulai 2010 Determining consecutive periods of the Lorenz maps. Advances in Difference Equations. Doi:10.1155/2010/985982 Article ID 985982.
Optimizing and integrating program designing and mathematical principles in mathematics modeling
Wang Fulai
Zhejiang university of f nance and economics, Hangzhou, 310018, China
With three examples of transformation from symbols to numbers, periodic lengths of congruence and performance in steps, optimization program designing by integrating mathematical principles is studied to save runtime and solve problems in mathematical modeling.
mathematical modeling; optimization of program designing; mathematical principle
2011-03-23 稿件編號:1103158
王福來,博士,副教授。
2010年浙江省新世紀(jì)高等教育教學(xué)改革項(xiàng)目(編號:ZC2010052);浙江財(cái)經(jīng)學(xué)院一類課程建設(shè)項(xiàng)目(編號:xjy1200915)。