推 wohtp: 這你的方程式有解析解啦 10/16 02:38
→ wohtp: 你要不要乾脆放棄數值算了 10/16 02:39
→ Ecampus: 解析解我有 只是我要做的是數值解跟解析解的對比 10/16 03:10
→ wohtp: 我覺得你首先連方程式是什麼意思好像都不清楚啊... 10/16 10:50
→ wohtp: 能夠魔改成沒有時間就已經很神奇了 10/16 10:51
→ wohtp: 然後你覺得拿掉時間以後得到的解是什麼意思? 10/16 10:52
→ wohtp: 我是不覺得你魔改過的方程式有什麼意義啦 10/16 10:55
→ wohtp: 然後你的邊界條件又是什麼意思? 10/16 10:56
→ wohtp: 時變就把 dc/dt --> c(t+1)-c(t) = ... 10/16 11:40
→ wohtp: 右邊那一堆都只跟 c(t) 有關 10/16 11:40
→ wohtp: 給定 c(t) 你可以算 c(t+1) - c(t),就可以找到 c(t+1) 10/16 11:41
→ wohtp: 不過你最好想清楚你的邊界條件要什麼 10/16 11:42
→ wohtp: 把邊邊直接釘在零實在很可疑 10/16 11:42
→ Ecampus: 我試一下大大說的時變寫法看看 唉 當初沒好好學基本程式= 10/16 17:10
→ Ecampus: =.=導致現在的苦果 10/16 17:10
推 bluecadence: 用python寫了個簡單的模擬程式 畫出來的圖長這樣 10/18 03:54
→ bluecadence: 橫軸是空間位置,縱軸是濃度。黑色曲線是起始濃度分 10/18 03:55
→ bluecadence: 部(假設是高斯分佈),然後其他紅色漸漸變淡的曲線是 10/18 03:57
→ bluecadence: 隨時間改變的濃度空間分佈變化。 10/18 03:57
推 sputtering: 樓上Good Job 10/18 07:55
→ wohtp: 問一下b大邊界條件是什麼? 10/18 10:26
→ bluecadence: 回w大 還沒有放任何邊界條件 10/18 11:40
→ bluecadence: 用的是forwrd Euler scheme 10/18 12:02
→ bluecadence: forward 10/18 12:03
→ wohtp: 不可能不放邊界條件吧?不然邊界附近的空間導數怎麼定義? 10/18 14:37
→ Vulpix: 大概可以當作Neumann BC吧? 10/18 15:30
→ Vulpix: 看那幾張圖,這個條件感覺比較符合code。 10/18 15:31
→ Vulpix: 不過邊界的空間導數也可以用one-side的寫法。 10/18 15:39
→ wohtp: 濃度到了邊界可不可以漏出去/怎麼漏出去可是很重要的 10/18 15:57
→ wohtp: 要是隨便放個periodic bc或是會反射的,那整體衰減其實就跟 10/18 15:58
→ wohtp: 擴散完全無關,不是嗎? 10/18 15:59
→ wohtp: 我想問的是這個 10/18 15:59
推 bluecadence: 感謝w大的指點。昨天半夜睡不著無聊爬起來亂寫一通:p 10/18 17:19
→ bluecadence: 我的確沒考量到邊界條件,也沒去處理這問題 10/18 17:20
→ bluecadence: 我剛剛仔細重新研究一下 我用的方法是Crank-Nicolson 10/18 17:22
→ bluecadence: implicit method 。過程中我沒有指定邊界值,但因為 10/18 17:25
→ bluecadence: 解聯立方程式的矩陣的第一列和最後一列是有初始給定 10/18 17:27
→ bluecadence: 特定值的,所以依舊算出來空間邊界的濃度,只是這個 10/18 17:28
→ bluecadence: 算出來的值有沒有意義,的確有很大的問題。 10/18 17:30
→ bluecadence: 第一次試著用數值方法解PDE,感謝指點 10/18 17:32
→ bluecadence: 濃度似乎沒有"漏"出去 因為面積的積分隨時間變化,一 10/18 17:35
→ bluecadence: 值保持相同 (面積~1) 10/18 17:36
→ bluecadence: 看來邊界條件也很費心思。我想問在一個開放的場域, 10/18 19:06
→ bluecadence: 原則上無限遠處濃度才等於0,那該如何設定合理的邊界 10/18 19:08
→ bluecadence: 條件 10/18 19:08
→ wohtp: 我也沒做過啊。會做的人也不必問這問題了? 10/18 20:37
→ bluecadence: 研究了一下,在數值方法中,邊界條件的給定 1. 當然 10/19 12:15
→ bluecadence: 如果有實際物理系統的量值測最好 2. 根據物理系統給 10/19 12:16
→ bluecadence: 與合理假設值 3. 假設線性,用"格子"內的點做外插 10/19 12:17
→ bluecadence: 4. 用無限遠處的邊界值,回推估計。每種方法都必須檢 10/19 12:19
→ bluecadence: 討誤差以及有效範圍。要得到接近現實的模擬,得費些 10/19 12:20
→ bluecadence: 功夫就是。 10/19 12:21
→ wohtp: 我想到的: 10/19 13:16
→ wohtp: 1. 系統取得夠大,邊界上濃度一直不高 --> 直接釘在零 10/19 13:17
→ wohtp: 2. 假設初始濃度都在原點附近,邊界上直接用 exp(-a x^2) 10/19 13:20
→ wohtp: 的形式去 fit,然後把該有的衰減用手插進去 10/19 13:21
→ sputtering: 可以問一下原PO那兩條方程的資料來源為何 10/19 15:20
→ Ecampus: ??第1張綠色背景的圖 是1D濃度擴散方程式的公式Y 10/19 15:57
→ Ecampus: 高斯分布那張圖 是TAYLOR G.I 在1953年提出的瞬時點源解 10/19 15:58
→ Ecampus: TAYLOR的瞬時點源解 被稱為解析解 10/19 15:58
→ sputtering: 又上了一課 10/19 18:36
不好意思 我的表達能力太差 讓大家看不懂我想問的東西...XD
其實我想問的 是下面這問題:
===============================
我們設定的最初濃度
在不同時間的時候 濃度應該也會隨時間而衰減吧~~~
(譬如 我在0m處的起點 丟了一把濃度10的粉末
過了1分鐘以後 0m處的濃度自然也會有衰減...
所以1分鐘後的0m處之濃度 也不會是10了)
請問這個問題 大家是如何處理的
https://imgur.com/TxeHaFC
譬如這個一維濃度擴散方程式而言
是用迭代處理嗎
顆顆 ..我打算直接用各種不同的T 手動帶進去
※ 編輯: Ecampus (125.230.93.173), 10/19/2017 19:08:02
→ bluecadence: ㄜ..我完全誤解你的問題 你問的問題是 Taylor 10/19 20:18
→ bluecadence: dispersion.. 所以請忽略我的圖 :p 10/19 20:18
→ bluecadence: 你還多了一項 shear flow 的影響 10/19 20:25
→ bluecadence: 還有多一項 external source 10/19 20:43
→ bluecadence: 應該是把我給你的程式裡面的A和B矩陣的元素重新寫過 10/19 21:43
→ bluecadence: (把shear flow 和external source考慮進去) 就可以了 10/19 21:43
→ bluecadence: 但這要花一些時間推導公式。我考慮的是解整個PDE, 10/19 21:46
→ bluecadence: 而不光是只想知道擴散物質的濃度在原點隨時間的變化 10/19 21:48
→ bluecadence: 你稱作衰減係數的P 就是我說的 external source or 10/19 21:52
→ bluecadence: sink 10/19 21:52
→ wohtp: 把 d/dx 代換成 (d/dx - E/2u) 總之配完整平方搞掉一階項 10/19 23:11
→ wohtp: 然後本來的解照樣用 10/19 23:12
→ wohtp: 應該這樣就可以了吧 10/19 23:12
→ Ecampus: !!!!!!!是的 立馬TRY一下 10/19 23:16
→ bluecadence: 也就是你的 u > 0 的時候 10/20 01:17
→ bluecadence: 在50的位置撒入一個gaussain分佈的擴散物,"河流"往 10/20 01:18
→ bluecadence: 橫軸的右方流動 10/20 01:19
→ bluecadence: (邊界條件必須更嚴格討論 不過大致上就這樣了) 10/20 01:20
→ bluecadence: 要取空間任一處濃度隨時間變化 都沒問題的。 10/20 01:23
→ bluecadence: 要扔 "delta function" 顯然在這數值計算會罩成困擾 10/20 01:55
→ bluecadence: 圖形出來不合理 我就不放了 10/20 01:56
→ bluecadence: 當把模擬空間加到更大例如1000,基本上不管是高斯或 10/20 01:58
→ bluecadence: 是方形分佈,都能慢慢逼近"delta function" 10/20 01:59
→ bluecadence: 這個東西玩二維應該會更好玩,diffusion 和 "河流"方 10/20 02:00
→ bluecadence: 向的交互影響,還有流速快慢和diffusion constant的 10/20 02:01
→ bluecadence: 大小變化 10/20 02:02
→ bluecadence: 我這模擬狀況故意把河流流速放的非常慢,只是要展示 10/20 02:07
→ bluecadence: 當 shear flow 出現時,對原本被動擴散的影響 10/20 02:08
→ wohtp: 下游邊界的濃度似乎累積得蠻高的,所以可能不太準? 10/20 15:41
→ bluecadence: 純粹邊界條件問題 我上游設定0 下游用外插法 所以我 10/20 16:25
→ bluecadence: 說邊界條件要更嚴格討論 不過我玩夠了 10/20 16:26
→ bluecadence: 而且如果仔細看 下游累積到某個高點 已經開始下降 10/20 16:28
→ bluecadence: 累積量和河流流速以及模擬時間長度會有關係 我肉眼 10/20 16:29
→ bluecadence: 看不出來 暫時也不會想要嚴格探討誤差 好玩罷了 10/20 16:30
→ bluecadence: 要讓邊界不累積很容易設定邊界0就好 但是會比較有意 10/20 16:32
→ bluecadence: 義嗎 這我是不知道 10/20 16:32
→ bluecadence: 我是沒把所有參數/條件全都清楚po上來 所以好像也沒 10/20 16:39
→ bluecadence: 甚麼價值討論。原 po 如果想做類似的模擬,就把我 10/20 16:43
→ bluecadence: 給的程式自己改一下矩陣A和B的元素,把 shear flow 10/20 16:44
→ bluecadence: 項影響後造成的改變放進去就好了。source/sink 在 10/20 16:46
→ bluecadence: 原po目前的狀況,大概還不必考慮 10/20 16:46
→ bluecadence: 當初只是想玩玩不同的邊界處理方式 沒想太多 10/20 17:00
→ Ecampus: 感謝大家 我來研究一下 感恩Q_Q 10/20 17:47
→ Ecampus: 感謝大家 我來研究一下 感恩Q_Q 10/20 17:48