微分方程求解二(偏微分方程求解)
文章目录(1)偏微分方程的类型(二阶)(2)抛物线型1.显式法2.Crank-Nicholson隐式算法 (3)双曲线型(4)椭圆型(1)偏微分方程的类型(二阶)a∂2u∂x2+b∂2u∂y∂x+c∂2u∂x2+d∂u∂x+e∂u∂y+fu+g=0a\frac{\partial^2u}{\partial x^2}+b\frac{\partial^2u}{\partial y\partial x}+
(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 a∂x2∂2u+b∂y∂x∂2u+c∂x2∂2u+d∂x∂u+e∂y∂u+fu+g=0
- b 2 − 4 a c < 0 b^2-4ac<0 b2−4ac<0 椭圆
- b 2 − 4 a c = 0 b^2-4ac=0 b2−4ac=0 抛物线
- b 2 − 4 a c > 0 b^2-4ac>0 b2−4ac>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+1−ui,j=h2ui+1,j−2ui,j+ui−1,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=rui−1,j+(1−2r)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是一个常数) −rui−1,1+(2+2r)ui,1−rui+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} −ui−1,j+1+4ui,j+1−ui+1,j+1=ui−1,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{} hk≤c1
- 具体求解按照之前类似的方法即可。
(4)椭圆型
- 得到的差分方程为 (这里取 k k k和 h h h相等):
- 求解
- 可以采用类似之前的隐式或者显式方法求解。
- 可以采用迭代法求解,比如雅克比迭代,转换成下面的迭代式
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)