数学建模社区-数学中国

标题: 偏微分方程的数值解(六): 偏微分方程的 pdetool 解法 [打印本页]

作者: 浅夏110    时间: 2020-6-10 10:34
标题: 偏微分方程的数值解(六): 偏微分方程的 pdetool 解法
1 图形界面解法简介* ?. X& |  V4 o5 O7 i% I
对于一般的区域,任意边界条件的偏微分方程,我们可以利用 MATLAB 中 pdetool 提供的偏微分方程用户图形界面解法。 图形界面解法步骤大致上为:' S+ O/ [: i( d/ t

/ B, c1 z. l  b3 X. w+ k(1)定义 PDE 问题,包括二维空间范围,边界条件以及 PDE 系数等。, N5 L; t4 j0 A& E* G$ O

& K- B& z3 S8 a: X% |7 o$ Z! I9 b(2)产生离散化之点,并将原 PDE 方程式离散化。
, u+ ~$ M+ K! F
# @. T8 v# N! w; q(3)利用有限元素法(finite element method;FEM)求解并显示答案。' ^4 ~1 r  {2 e: R
6 t& |$ N4 ^3 D: E: t6 W, h& I
在说明此解法工具之前,先介绍此 PDE 图形界面的菜单下方的功能图标(icon)按 钮。
. y( T) u2 p! O1 R9 V4 s; T& O! {8 ]! ~* V9 C- A
( C8 U3 J1 \- N/ s# ?$ V- |! S

, a" O! P3 c, H6 _" V4 s% C" `2 图形界面解法的使用步骤
9 e4 P0 W; x' g7 R9 q6 B9 t, P要利用 pdetool 接口求解之前,需先定义 PDE 问题,其包含三大部份:
# a( I9 \8 H# I% t) n' i; U, F) b7 P% N
(1)利用绘图(draw)模式,定义 需要求解的问题的空间范围(domain)Ω 。
3 U( W6 o" C, x' \3 y) _; O# t3 E% W6 j7 E
(2)利用 boundary 模式,指定边界条件。
/ T' j' X" H1 u+ I& B5 j& \5 H, @
8 D8 M  R9 }2 U! h1 |8 {  m# i(3)利用 PDE 模式,指定 PDE 系数,即输入 c,a,f 和 d 等 PDE 模式中的系数。3 V* j/ \' c, d4 ~+ L4 T% W
0 S+ q  `& w4 q2 G& E4 |' d( Z
在定义 PDE 问题之后,可依以下两个步骤求解. _' `# x5 L% G' F' ]! e' T; f+ T, {

- i, [  M9 g( o(1)在 mesh 模式下,产生 mesh 点,以便将原问题离散化。' h7 D) m& ?4 A3 w# h' {
7 ^, ?- r# r' T  I
(2)在 solve 模式下,求解。
8 o$ }) `2 e) W  c4 D1 ~! a, E3 B' @1 a2 o% w7 [8 D) ~
(3)最后,在 Plot 模式下,显示答案。
# M, ]# E! U. J, b; P: s$ D. v% Y& K3 a6 b' `9 c

/ @; w- `% C  @1 n! Q. D; [6 v# L5 {9 U7 x
1 B' L. w; }$ n0 ?/ M0 L

  b4 J1 f. Z1 b* D. ?
8 |& w' Q. ?6 s6 b$ i2 s4 K4 Y. y- U5 m- Q0 [
' K8 K4 {3 U3 u# w6 R/ I8 t

$ Q; z. i% ^! }3 L
' U6 v# t" m& s* c, v9 e3 q注意:, _1 z$ s  [$ D

+ n; Y5 M& H( g; f. L! E1. MATLAB 会以图形的方式展示结果,使用者亦可点选 plot 下之“parameters”功 能,选择适当的方式显示图形及数据。例如用 3D 方式显示求解结果。参数设置见图 10, 显示结果见图 11。
" i4 {; D) c3 I  s# i+ o% ]0 c3 |
  m  c8 s5 E: ~" A5 |* E6 i. C+ ]/ M) C
7 t; t- b. p' m- j
2. 另外,若使用者欲将结果输出到命令窗口中,以供后续处理,可利用 solve 功能 项下之“export solution”指定变量名称来完成。; @" M2 B0 U1 M! d$ X

( x5 c. w* N( Y# b3. 如果求抛物型或双曲型方程的数值解,还需要通过“solve”菜单下的 “parameters…”选项设置初值条件。
% T9 L. {5 K; S! R9 f. Z" e7 m/ x4 Z0 r' s( w+ P- s/ t
4. 在上面定义边界条件和初始条件时,可以使用一些内置变量。
! E1 o4 @: @* ], J. ~- k- I+ D, l: J$ _
(1)在边界条件输入框中,可以使用如下变量: 二维坐标 x 和 y,边界线段长度参数(s s 是以箭头的方向沿边界线段从 0 增加到 1), 外法向矢量的分量 nx 和 ny(如果需要边界的切线方向,可以通过 tx=-ny 和 ty=nx 表示), 解 u。- R: l. E' B, ?5 T# F  F: m
7 x$ Y/ Y+ e) P) t
(2)在初值条件的输入框中,也可以输入用户定义的 MATLAB 可接受变量(p, e,t,x,y)的函数。2 t2 @. ~( K$ a7 m1 ?
1 y. j; E7 S4 @. Y2 I
例 11 使用 PDETOOL 重新求例 8 的数值解。
( t9 K1 G# V. ?" D" K
. J% t, s" u2 M% _                例8  求解正方形区域{(x, y) | −1 ≤ x, y ≤ 1}上的热传导方程8 A0 F/ u& A9 c/ h( z3 x. ~, i

" I$ K/ y+ Z1 ^" j+ c, x  `' B5 A1 |& H' M. \
2 q7 e0 `/ H, U4 s
边界条件为Dirichlet条件u = 0。
7 Z: x+ h) O; e) w7 ^6 T# w% h) y8 f1 |# Z& N2 K" ~! P/ j. o* h
解 这里是抛物型方程,其中c = 1, a = 0, f = 0, d = 1。
) n0 {" z6 A0 A* m5 K1 `$ |6 Y
% x6 K' Y6 D+ ^: H# S1)定义 PDE 问题,包括二维空间范围,边界条件以及 PDE 系数等。我们这里就 省略了。
8 V* p9 e. Z1 O& W. @0 H* t: c) p! @# k
2)区域剖分以后,通过“Mesh”菜单下的“Export Mesh…”选项可以把 p,e,t 三个参数分别输出到工作间。
/ t* A, {, U( s6 T0 u" O
/ C# v% L4 E- B" h3)然后编写函数 fun1(x,y)如下:5 Z. E* X0 ~3 }3 m' Q3 @
/ ~$ H. E: h$ s6 L4 D
function f=fun1(x,y);
! B2 x  C* `4 F7 Wf=zeros(length(x),1);: D2 ~* E# E5 q2 S+ }2 o" X: }
ix=find(x.^2+y.^2<0.16);( b! `% z' B4 K& p
f(ix)=1;
7 E  \$ u6 x5 A0 y; {" S3 @
$ z" D0 V7 @; `: Z其中的变量 x,y 是 MATLAB 可接受的内置变量。 设置“solve”菜单下的“parameters…”选项如下:
$ ?7 V: a' }. \  D; P6 R; A1 B2 Q5 {5 D3 l
时间框中输入:linspace(0,0.1,20);
, y6 M0 c: Q+ X* c( w
+ d' s! s  }  m/ [3 }2 M  t初值框中输入:fun1。
+ ]6 Y% o$ L1 r+ M, a9 K- B
& [' A( i4 ?5 m4)设置“plot"菜单下的“parameters…”选项如下:选择 Height(3-D plot) 和 Animation 两项。
* n* _# @$ @7 ?; x! b8 C
  j# ~: z7 X' h, i. O% ^: `/ K, h8 L5)用鼠标点一下工具栏上的“=”按钮,就可以画出数值解的 3-D 图形。: S: ]/ r( s$ L6 u. f
) |# e+ U6 E% ?) r3 A  Q

; V( j% ]# i4 S$ a+ n3 @————————————————' P, p9 y5 S( _# s) G; }& ]
版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
3 Q2 V' S/ ~4 I+ q% _) m原文链接:https://blog.csdn.net/qq_29831163/article/details/89712663% F  F, ]* m' ~, y' W
! o) [  K# S" C0 }. E7 T8 C
5 v( I% Q. }* B  E





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5