創作內容

3 GP

一維波動方程模擬

作者:已經改掉暱稱的米奇│2019-01-23 02:01:05│巴幣:14│人氣:590
記ㄍ一下
先放一維的
穩定度分析和二維的之後再放



---
notebook放在這


一維波動方程長這樣
第2、3個式子是Boundary Condition
第4、5則是Initial Condition


使用最簡單的有限差分法來解


利用有限差分法,可以把原本的方程式離散化


利用最後離散化的結果,就可以去迭代算出結果了

但是從最後那個式子可以看出
如果想要知道某個時間點 i+1 的值,那麼需要 i 和 i-1 的值才能夠把它算出來
也就是說至少一開始需要t = 0和t = 1的資料,這樣才可以推出t = 2的資料
然後才可以再根據t = 1、t = 2算出t = 3的資料,以此類推

而最一開始的t=0、t=1的資料
就需要靠前面的Initial Condition去得到
其中f(x)可以得到t = 0時的資料
t = 1時則是用另一個IC,搭配g(x)算出來

假設一個例子
這個例子裡,初始情況是f(x) = 0.5 * (cos(2pi * x) - 1)
而g(x) = 0,也就是代表t = 0時和t = 1時,兩個時間的資料是一模一樣的
另外BC則設定固定,也就是邊界不會跟著震盪
那計算大概是這樣



畫成圖的話是這樣




如果用3D的圖來畫會長這樣



畫成gif來表示


GIF在這





如果換一個IC
改成是一個Impulse
也就是這樣


結果會變成




GIF在這



另一個情況是free boundary
我這邊設定只有其中一個邊界固定
另外一個邊界讓它自由移動
所以寫成這樣


只需要改這ㄍ其他都不變

最後的結果變成這樣



GIF




如果IC改成Impulse,然後同樣讓一個邊界自由移動
會是這樣



GIF



-------
穩定性的部分
依據Von Neumann Stability Analysis,可以得到穩定條件為c < dx / dt
所以假設dx = dt = 0.1時
如果c = 0.94,那麼會是穩定的


而如果同樣dx = dt = 0.1
但是c = 1.01
因c = 1.01 > (0.1/0.1),所以會是數值不穩定



發生不穩定時,可以直接透過調整dx、dt,讓式子滿足穩定條件
或是改用其他方法解PDE
比方說如果改用隱式的做法
同樣利用Von Neumann Stability Analysis,可以證明在任何情況下都是數值穩定的


------
結論:
用latex打公式好累....
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4269859
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 4 篇留言

驥哥
看不懂但感覺好猛==

02-15 22:05

已經改掉暱稱的米奇
哀窩都快畢業了才在寫這種東西= =03-03 13:32
新手
太神ㄌ吧

02-28 22:41

已經改掉暱稱的米奇
唉我只會寫這種鳥東西...
02-28 23:16
fresnel
最近剛好在學這個

08-21 21:07

已經改掉暱稱的米奇
好奇問 是什麼課學這個R08-21 21:15
fresnel
暑期課程,電磁的數值模擬

08-21 21:16

已經改掉暱稱的米奇
哦哦 數值模擬我到現在還沒有修過 改天找找看有沒有相關的書好了08-21 21:17
我要留言提醒:您尚未登入,請先登入再留言

3喜歡★micky85lu 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:(筆記) pandas的... 後一篇:(筆記) python的...

追蹤私訊切換新版閱覽

作品資料夾

tyu15826大家
蓋婭薔薇—亞獸之戰已更新,面對911的威脅,貝歐等人開始聚集並團結對抗看更多我要大聲說6小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】