




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、人工智能原理:基于Python語言和TensorFlow第10章 偏微分方程模擬仿真計(jì)算函數(shù)的定義偏微分方程的定義仿真簡(jiǎn)介18世紀(jì),瑞士數(shù)學(xué)家萊昂哈德歐拉(Leonhard EuLer)在與其他數(shù)學(xué)家解決物理問題的過程中,創(chuàng)立了微分方程這門學(xué)科。常見的微分方程有常微分方程、偏微分方程等,其中,常微分方程是指解得的未知函數(shù)是一元函數(shù)的微分方程,即一個(gè)量隨一個(gè)自變量變化的規(guī)律,比如我們常見到的行駛中的車輛位置會(huì)隨著時(shí)間變化而規(guī)律運(yùn)動(dòng);偏微分方程是指解得的未知函數(shù)是多元函數(shù)的微分方程,即一個(gè)量隨兩個(gè)或多個(gè)自變量變化的規(guī)律,它比常微分方程更復(fù)雜一些,不僅僅在于自變量的增多,還因?yàn)楦鱾€(gè)自變量之間會(huì)有耦合
2、,比如溫度會(huì)隨著時(shí)間的變化而在不同位置上有不同的數(shù)值表現(xiàn),與此同時(shí),溫度隨位置的變化也會(huì)因?yàn)闀r(shí)間的不同而在數(shù)值上有所變化,生活中的天氣預(yù)報(bào),就是通過計(jì)算機(jī)來對(duì)偏微分方程進(jìn)行求解而得到的。簡(jiǎn)介偏微分方程關(guān)于純數(shù)學(xué)研究的第一篇論文是歐拉所寫的方程的積分法研究,在此之后,法國數(shù)學(xué)家達(dá)朗貝爾(Jean Le Rond dALembert)也在他的著作動(dòng)力學(xué)和論文張緊的弦振動(dòng)時(shí)形成的曲線的研究中提出了關(guān)于偏微分方程的內(nèi)容,從而最終開創(chuàng)了偏微分方程這門學(xué)科。19世紀(jì)是偏微分方程迅速發(fā)展的時(shí)期,瑞士數(shù)學(xué)家丹尼爾伯努利(DanieL BernouLLi)、法國數(shù)學(xué)家約瑟夫拉格朗日(Joseph-Louis L
3、agrange)、讓巴普蒂斯約瑟夫傅里葉(Jean Baptiste Joseph Fourier)在各自研究領(lǐng)域的成果都對(duì)偏微分方程的發(fā)展產(chǎn)生了不同程度的影響。簡(jiǎn)介對(duì)于偏微分方程問題的討論和解決,往往需要應(yīng)用微分幾何學(xué)、代數(shù)與拓?fù)鋵W(xué)等其他數(shù)學(xué)分支的理論和方法。偏微分方程的解有無窮多個(gè),但是解決具體的實(shí)際問題時(shí),則需要從中選取出所需要的最適合的解,因此,一些必備的附加條件是必不可少的。偏微分方程屬于同一類現(xiàn)象的共同規(guī)律的表示式,僅僅知道共同規(guī)律是無法掌握和了解具體問題的特殊性的,所以,針對(duì)不同的具體問題,它的特殊性就在于所處的不同環(huán)境的特定條件,即初始條件和邊界條件,又被稱為定解條件。定解條件
4、反映出具體問題的個(gè)性和具體情況,定解條件和方程式的結(jié)合被稱為定解問題。求偏微分方程的定解問題可以先求出它的通解,然后再用定解條件確定出函數(shù)。10.1 計(jì)算函數(shù)的定義首先,針對(duì)計(jì)算函數(shù),先導(dǎo)入一些模擬仿真所必需的庫文件,代碼如下所示。*#導(dǎo)入模擬仿真需要的庫import tensorfLow as tfimport numpy as np#導(dǎo)入可視化需要的庫import PIL.Imagefrom cStringIO import StringIOfrom IPython.dispLay import cLear_output, Image, dispLay*10.1 計(jì)算函數(shù)的定義源程序代碼內(nèi)
5、容中,通過使用import tensorfLow as tf和import numpy as np將模擬仿真中所需要的TensorFlow模塊和NumPy模塊進(jìn)行導(dǎo)入;import PIL.Image代碼中的圖像處理類庫(Python Imaging Library Python,PIL)提供了關(guān)于圖像的最基本的處理及功能操作,如圖像的旋轉(zhuǎn)、裁剪、縮放、顏色的變化等。利用免費(fèi)的圖像處理類庫中的各類函數(shù),我們可以將數(shù)據(jù)從圖像格式的文件中提取出來進(jìn)行數(shù)據(jù)處理,然后再將處理之后的數(shù)據(jù)寫入到指定的圖像格式中,在圖像處理類庫的眾多函數(shù)中,最重要的一個(gè)函數(shù)是Image函數(shù)。在代碼內(nèi)容中,from cStr
6、ingIO import StringIO代碼語句中的cStringIO和StringIO所代表的是兩個(gè)不同功能的模塊,這兩個(gè)模塊具有相似的功能操作。10.1 計(jì)算函數(shù)的定義其中,StringIO模塊的功能和文件具有很高的相似性,它算是存在于內(nèi)存中的一個(gè)文件,對(duì)StringIO模塊進(jìn)行操作的方法與我們對(duì)磁盤文件進(jìn)行操作的方法相類似,即通過StringIO模塊對(duì)內(nèi)存文件進(jìn)行讀取和寫入的操作;而cStringIO模塊則與StringIO模塊相類似,但是它又比StringIO模塊更高效一些。原因是因?yàn)镻ython語言是一種動(dòng)態(tài)的計(jì)算機(jī)編程語言,它可以進(jìn)行解釋性執(zhí)行,如果想要針對(duì)Python程序代碼的
7、運(yùn)行速度進(jìn)行提高,可以通過使用C語言來對(duì)某些關(guān)鍵函數(shù)進(jìn)行重寫,通過這種方式可以提高整個(gè)Python程序代碼的執(zhí)行速度,而具體到cStringIO和StringIO這兩個(gè)模塊來講,StringIO模塊是使用純Python代碼編寫的模塊內(nèi)容,而cStringIO模塊中的部分函數(shù)則是使用C語言編寫的,因此cStringIO模塊運(yùn)行速度會(huì)更高效。10.1 計(jì)算函數(shù)的定義針對(duì)池塘的表面狀態(tài),我們通過一些程序代碼來進(jìn)行相應(yīng)操作的函數(shù)設(shè)定,代碼如下所示。*def DispLayArray(a, fmt=jpeg, rng=0,1): DispLay an array as a picture. a = (a
8、 - rng0)/fLoat(rng1 - rng0)*255 a = np.uint8(np.cLip(a, 0, 255) f = StringIO() PIL.Image.fromarray(a).save(f, fmt) dispLay(Image(data=f.getvaLue()*10.1 計(jì)算函數(shù)的定義接下來,需要打開一個(gè)TensorFLow的交互式會(huì)話內(nèi)容,來進(jìn)行更加方便的效果演示。此外,將相關(guān)代碼內(nèi)容寫入到Python編程語言的可執(zhí)行文件中,這樣能夠在以后的操作中更加方便地進(jìn)行調(diào)用,代碼如下所示。*sess = tf.InteractiveSession()*10.1 計(jì)算函
9、數(shù)的定義經(jīng)過前面知識(shí)點(diǎn)的學(xué)習(xí),我們已經(jīng)知道了TensorFLow是基于圖的計(jì)算系統(tǒng),圖的節(jié)點(diǎn)是由操作來構(gòu)成的,而圖的各個(gè)節(jié)點(diǎn)是由張量作為邊來進(jìn)行連接的,TensorFLow的圖必須在一個(gè)Session操作中來進(jìn)行計(jì)算,Session操作提供了代碼執(zhí)行和張量求值的環(huán)境。TensorFLow中的變量和操作定義好以后,由Session對(duì)象合成圖形才會(huì)得到最終的結(jié)果圖像,我們一般使用tf.Session()對(duì)象來進(jìn)行相應(yīng)的操作,但是Session的運(yùn)行會(huì)涉及運(yùn)算,比較消耗資源,因此在Session的運(yùn)行操作結(jié)束以后,我們需要通過使用sess.cLose()語句來手動(dòng)關(guān)閉Session操作。另外,對(duì)于P
10、ython原生編輯器或類似于Jupyter這樣的基于瀏覽器的Python編輯器來講,運(yùn)行時(shí)需要將程序代碼一段一段地輸入,于是,就出現(xiàn)了tf.InteractiveSession()這樣的交互式Session。用來完成在圖的運(yùn)行過程中實(shí)現(xiàn)一些計(jì)算圖的插入,這些計(jì)算圖可以由某些操作構(gòu)成。通過此種方式,可以提高交互式環(huán)境中工作的便利性,在構(gòu)建交互式會(huì)話時(shí),可以先構(gòu)建一個(gè)Session,然后再定義一個(gè)操作,其目的是為了實(shí)現(xiàn)交互式環(huán)境下,手動(dòng)設(shè)定當(dāng)前Session為默認(rèn)Session,從而避免掉了每次都要針對(duì)sess進(jìn)行說明的繁瑣過程,10.1 計(jì)算函數(shù)的定義代碼如下所示。*def make_kerne
11、L(a): Transform a 2D array into a convoLution kerneL a = np.asarray(a) a = a.reshape(List(a.shape) + 1,1) return tf.constant(a, dtype=1)def simpLe_conv(x, k): A simpLified 2D convoLution operation x = tf.expand_dims(tf.expand_dims(x, 0), -1) y = tf.nn.depthwise_conv2d(x, k, 1, 1, 1, 1, padding=SAME)
12、 return y0, :, :, 0def LapLace(x): Compute the 2D LapLacian of an array LapLace_k = make_kerneL(0.5, 1.0, 0.5, 1.0, -6., 1.0, 0.5, 1.0, 0.5)return simpLe_conv(x, LapLace_k)*第10章 偏微分方程模擬仿真計(jì)算函數(shù)的定義偏微分方程的定義仿真10.2 偏微分方程的定義我們首先創(chuàng)建一個(gè)500500的方形池塘以及若干滴即將落入池塘中的雨滴,代碼如下所示。*N = 500#初始條件-一些雨滴落入池塘#設(shè)置變量為零u_init = np.
13、zeros(N, N, dtype=fLoat32)ut_init = np.zeros(N, N, dtype=fLoat32)#一些雨滴隨機(jī)落入池塘中for n in range(40): a,b = np.random.randint(0, N, 2) u_inita,b = np.random.uniform()DispLayArray(u_init, rng=-0.1, 0.1)*10.2 偏微分方程的定義運(yùn)行后,模擬圖片如圖所示。10.2 偏微分方程的定義下一步,針對(duì)微分方程的一些詳細(xì)參數(shù),進(jìn)行制定,代碼如下所示。*#參數(shù):#eps 時(shí)間分辨率#damping 波阻尼eps = t
14、f.pLacehoLder(tf.fLoat32, shape=()damping = tf.pLacehoLder(tf.fLoat32, shape=()#為模擬狀態(tài)創(chuàng)建變量U = tf.VariabLe(u_init)Ut = tf.VariabLe(ut_init)#離散PDE更新規(guī)則U_ = U + eps * UtUt_ = Ut + eps * (LapLace(U) - damping * Ut)#更新狀態(tài)的操作step = tf.group( U.assign(U_), Ut.assign(Ut_)*第10章 偏微分方程模擬仿真計(jì)算函數(shù)的定義偏微分方程的定義仿真10.3 仿真仿真過程中,加入for循環(huán)代碼部分,來實(shí)現(xiàn)仿真效果的清晰化,代碼如下所示。*#初始化狀態(tài)到初始條件tf.initiaLize_aLL_variabL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 債務(wù)劃清責(zé)任合同范本簡(jiǎn)易
- 雙軟認(rèn)證合同范本
- 農(nóng)村房屋合同范例
- 不買社保勞務(wù)合同范本
- 合作木柴出售合同范本
- 公司裁員合同范本
- 廠房回收拆除合同范例
- 農(nóng)村果林租賃合同范本
- 印花材料供應(yīng)合同范本
- 東麗區(qū)恒溫配送合同范本
- 職業(yè)生涯規(guī)劃的步驟與方法課件
- 2024解析:第十五章電流和電路-講核心(解析版)
- 米勒黑曼策略銷售培訓(xùn)
- 2024年下半年東方電氣長(zhǎng)三角(杭州)創(chuàng)新研究院限公司第二批招聘易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2020-2024年五年高考語文真題分類匯編專題04 古代詩歌鑒賞(解析版)
- 【重點(diǎn)易錯(cuò)題每日一練小紙條】二年級(jí)數(shù)學(xué)下冊(cè)
- 2024年小紅書初級(jí)營銷師題庫
- 2022年公務(wù)員多省聯(lián)考《申論》真題(重慶二卷)及答案解析
- -2012橋梁樁基施工方案
- 課題1 碳單質(zhì)的多樣性(第1課時(shí))課件九年級(jí)化學(xué)上冊(cè)人教版2024
- 康復(fù)醫(yī)學(xué)題庫與答案
評(píng)論
0/150
提交評(píng)論