簡體   English   中英

如何使用MATLAB解決此PDE

[英]How do I use MATLAB to solve this PDE

我在練習考試中有以下問題:

在此輸入圖像描述

我需要使用MATLAB來解決它。 問題是,我之前沒有看到這樣的問題而且我正在努力開始。

我有1x1網格,分成10x10。 我知道我可以使用1/10 * x * 2計算角落以外的整個底行。 我也知道我可以使用(1/10)(1 + t)^ 2計算整個右行。 但是,我無法弄清楚如何獲得足夠的分數來填充整個網格的值。 我知道它必須與問題中給出的偏導數有關,但我不太確定它們在哪里發揮作用(尤其是u_x方程)。 有人可以幫助我從這里開始嗎?

我不需要整個解決方案。 一旦我有足夠的積分,我就可以輕松編寫一個matlab程序來解決剩下的問題。 真的,我想我只需要解決x = 0軸,然后我就填寫網格的中間部分。

我已計算出底行,減去兩個角,為0.001,0.004,0.009,0.016,0.025,0.036,0.049,0.064,0.081。 類似地,使用給定的邊界條件計算整個右行是很簡單的。 我只是無法拼湊到哪里去那里。

編輯:第三個邊界條件方程輸入錯誤。 它應該是:

u_x(0,t)= 1 / 5t,NOT u(0,t)= 1 / 5t

首先要意識到你必須解決的方程是線性波方程 ,你給出的數值方案可以改寫為

( u^(n+1)_m - 2u^n_m + u^(n-1)_m )/k^2 = ( u^n_(m-1) - 2u^n_m + u^n_(m+1) )/h^2

其中k是時間步長, h是空間中的delta x

重新構造的數值方案清楚地表明,左側和右側分別是u_ttu_xx 二階中心有限差分近似。

但是,要以數字方式解決問題,您需要使用給定的形式,因為它是您需要以數字方式實現的顯式更新公式:它在時間n+1為您提供前兩次的函數nn-1 您需要從初始條件開始並及時進行解決方案。

觀察到解決方案是在域的邊界上分配的( x=0x=1 ),因此離散化解u^(n)_0u^(n)_10的值對於任何n都是已知的( t=n*k )。 在第n個步驟,你的未知是向量[u^(n+1)_1, u^(n+1)_2, ..., u^(n+1)_9]

另請注意,要使用更新公式在n+1步驟中找到解決方案,需要在前兩個步驟中了解解決方案。 那么,你如何從開始n=0 ,如果你需要從前面兩個時間的信息? 這是初始條件發揮作用的地方。 你有n=0t=0 )的解決方案,但你在t=0也有u_t 這兩條信息組合起來可以給你u^0u^1並讓你入門。

我會使用以下啟動方案:

u^0_m = u(h*m,0)  // initial condition on u
(u^2_m - u^0_m)/(2k) = u_t(h*m,0)  // initial condition on u_t

n=1使用的數值方案相結合,為m=1,...,9提供了為u^1_mu^2_m定義線性系統所需的一切。

總結一下:

--use啟動方案來發現在溶液n=1n=2 同時進行

- 使用您給出的數值方案從3月開始。

如果你完全迷失了,請查看:有限差分格式,平流方程的有限差分格式,雙曲線方程的有限差分格式,時間推進等。

編輯:

對於u_x上的邊界條件,通常使用ghost單元格方法:

  • m=-1處引入鬼影單元,即用於處理邊界條件的虛擬(或輔助)網格點,但這不是解決方案的一部分。

  • 第一個節點m=0回到你的未知向量,即你現在正在使用[u_0 u_1 ... u_9]

  • 使用左側邊界條件關閉系統。 具體地說,通過記下邊界條件的居中近似值

    u^n_(1) - u^n_(-1) = 2*h*u_x(0,k*n)

  • 上面的等式允許您根據內部實節點上的解決方案在ghost節點上表達解決方案。 因此,您可以將時間推進的數值方案(您給出的方案)應用於m=0節點。 (應用於m=0的數值方案將包含來自m=-1重影節點的貢獻,但現在您已根據m=1節點表示。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM