微分方程求解二(偏微分方程求解)

(1)偏微分方程的類型(二階)

a ∂ 2 u ∂ x 2 + b ∂ 2 u ∂ y ∂ x + c ∂ 2 u ∂ x 2 + d ∂ u ∂ x + e ∂ u ∂ y + f u + g = 0 a\frac{\partial^2u}{\partial x^2}+b\frac{\partial^2u}{\partial y\partial x}+c\frac{\partial^2u}{\partial x^2}+d\frac{\partial u}{\partial x}+e\frac{\partial u}{\partial y}+fu+g=0 ax22u+byx2u+cx22u+dxu+eyu+fu+g=0

  • b 2 − 4 a c < 0 b^2-4ac<0 b24ac<0 橢圓
  • b 2 − 4 a c = 0 b^2-4ac=0 b24ac=0 拋物線
  • b 2 − 4 a c < 0 b^2-4ac<0 b24ac<0 雙曲線

(2)拋物線型

1.顯式法

  • 求解思想:通過差分的方法一排一排向上推。
  • 做劃分並代入方程 u i , j + 1 − u i , j k = u i + 1 , j − 2 u i , j + u i − 1 , j h 2    ( Δ x = h , Δ t = k ) \frac{u_{i,j+1}-u_{i,j}}{k}=\frac{u_{i+1,j}-2u_{i,j}+u_{i-1,j}}{h^2}~~(\Delta x=h,\Delta t=k) kui,j+1ui,j=h2ui+1,j2ui,j+ui1,j  (Δx=h,Δt=k)
  • 通過化簡得到 u i , j + 1 = r u i − 1 , j + ( 1 − 2 r ) u i , j + r u i + 1 , j    ( r = k h 2 ) u_{i,j+1}=ru_{i-1,j}+(1-2r)u_{i,j}+ru_{i+1,j}~~(r=\frac{k}{h^2}) ui,j+1=rui1,j+(12r)ui,j+rui+1,j  (r=h2k)
  • 具體推的步驟大概如下:
    • 由於已知 u ( x , 0 ) = f ( x ) u(x,0)=f(x) u(x,0)=f(x),因此相當於知道 u 0 , 0 , u 1 , 0 , u 2 , 0 … u_{0,0},u_{1,0},u_{2,0}\dots u0,0,u1,0,u2,0
    • 通過上面的公式就可以推出來 u 1 , 1 , u 2 , 1 , u 3 , 1 … u_{1,1},u_{2,1},u_{3,1}\dots u1,1,u2,1,u3,1,注意由於已知左邊界和右邊界,因此 u 0 , 1 u_{0,1} u0,1也知道,所以第二排就可以全部推出來。
    • 通過上面的方式可以求出區域內全部的數值解。

2.Crank-Nicholson隱式算法

  • 求解思想:也是一排一排向上推,但是這次是使用線性方程組一次性求出一排。
  • 這裏採用相同的劃分方式,但是代入不同的差分方程
  • 通過化簡得到
  • 具體推的步驟大概如下:
    • 由於已知 u ( x , 0 ) = f ( x ) u(x,0)=f(x) u(x,0)=f(x),因此相當於知道 u 0 , 0 , u 1 , 0 , u 2 , 0 … u_{0,0},u_{1,0},u_{2,0}\dots u0,0,u1,0,u2,0
    • 通過上面的公式就可以推出來方程 − r u i − 1 , 1 + ( 2 + 2 r ) u i , 1 − r u i + 1 , 1 = c     ( c 是 一 個 常 數 ) -ru_{i-1,1}+(2+2r)u_{i,1}-ru_{i+1,1}=c~~~(c是一個常數) rui1,1+(2+2r)ui,1rui+1,1=c   (c),注意由於已知左邊界和右邊界,所以這個其實就轉化成在一維上的差分問題,最後列出全部的方程構成方程組求解即可。
    • 通過上面的方式可以求出區域內全部的數值解。
  • 一個例子:
  • 做劃分並且代入差分方程
    k = 0.01 , h = 0.1 k=0.01,h=0.1 k=0.01,h=0.1
    − u i − 1 , j + 1 + 4 u i , j + 1 − u i + 1 , j + 1 = u i − 1 , j + u i + 1 , j -u_{i-1,j+1}+4u_{i,j+1}-u_{i+1,j+1}=u_{i-1,j}+u_{i+1,j} ui1,j+1+4ui,j+1ui+1,j+1=ui1,j+ui+1,j
  • 進行求解(這裏利用了對稱性,在 x = 0.5 x=0.5 x=0.5 兩邊是對稱的,將 j = 0 j=0 j=0隱去,並根據對稱性將 u 6 u_6 u6替換成 u 4 u_4 u4)

(3)雙曲線型

  • 得到的差分方程爲 ( r = k h r=\frac{k}{h} r=hk注意和之前的定義不同):
  • 劃分需要滿足一定的條件 k h ≤ 1 c \frac{k}{h}\le\frac{1}c{} hkc1
  • 具體求解按照之前類似的方法即可。

(4)橢圓型

  • 得到的差分方程爲 (這裏取 k k k h h h相等):
  • 求解
    • 可以採用類似之前的隱式或者顯式方法求解。
    • 可以採用迭代法求解,比如雅克比迭代,轉換成下面的迭代式