EDA365电子论坛网

标题: MATLAB源程序代码分享:MATLAB实现偏微分方程(扩散方程)的有限差分求解法 [打印本页]

作者: House    时间: 2020-3-11 10:20
标题: MATLAB源程序代码分享:MATLAB实现偏微分方程(扩散方程)的有限差分求解法
/ c& r$ `9 Z" j; ~& M+ I
MATLAB源程序代码分享:MATLAB实现偏微分方程(扩散方程)的有限差分求解法
# H8 e# J5 q$ b; D* Y, \  l- @# o. x; U

3 t* n! O* Z* l  A) Z. N / s4 u- g6 ?. J( R& O- }
, E  E0 d8 _% @$ J$ \2 Z/ S
%% 定义 (x,t) 平面上的网格点坐标2 o- w* o# W) Z
clear;clc;close all1 L# ]0 i6 C% U( B0 [; @
dx=0.05;              % x 方向的步长
6 u; K" {( p7 v+ S5 S( }  Xdt=0.001;             % t 方向的步长
; \/ \$ R8 t4 r  d5 ~& Ex=0:dx:1;             % 得到 x 的序列 (离散点 x 坐标)
$ J0 i% c' j( a5 @$ R* \t=0:dt:0.3;           % 得到 t 的序列 (离散点 t 坐标), ?1 I' k6 t/ y! B, v
r=dt/(dx^2);          % 计算 r 的值# a% n6 D+ i: {( C; x5 d

" o2 O1 h* A+ y8 a%% 设置偏微分方程的初始条件, 边界条件
- J3 }' n- }+ Y1 f0 O) j  ~% ?M=length(x)-1;        % 计算 x 方向的分段数
8 G; {7 u# t% e: NN=length(t)-1;        % 计算 t 方向的分段数
" X. b# N. @5 s  C$ S- t9 e8 j" _! R- S
Phi=ones(N+1,M+1);    % 生成一个初始值全部为 1 的矩阵
# M- q3 c3 S$ U# tPhi(1,: )=50;          % 设置初值条件: Phi(x,0)=50
+ U) F! k/ L5 `/ C) a1 mPhi(2: N+1,1)=0;       % 设置边界条件: Phi(0,t)=0# U3 o, ~- @) m7 |3 ^9 O8 c6 m7 c/ A
Phi(2: N+1,M+1)=0;     % 设置边界条件: Phi(1,t)=0
& T) O, b7 T& ~# w) @0 v5 `, ]% M& I. T; _: l' h& F' u- P" v
%% 根据推导出的差分方程, 计算偏微分方程的数值解
3 n. S( @: M. r! O9 g3 ~/ sfor k=1:N
' i5 ?% b. d+ C    for i=2:M
% m1 O$ X; b  ?- J; A2 {4 n        Phi(k+1,i)=(1-2*r)*Phi(k,i)+r*(Phi(k,i-1)+Phi(k,i+1));1 U8 q: g% m2 S; ]' K* V
    end' @- H( G1 g  ^
end
5 d* J- s1 d+ c  q4 o
' s) s7 F3 F+ w% l" [3 n1 X- `%% 绘制偏微分方程的计算结果: (x, t, Phi) 的三维网格图
7 F1 y7 b+ ~& w2 ?! o) Q1 sfigure$ C, r& Q' y  G0 h( Y- T! Q8 n
set(gcf,'units','normalized','position',[0.2 0.2 0.6 0.6]);  % 设置 figure 窗口的位置和尺寸9 T4 @. I7 x# n( r& t/ a, s, i) k
[x,t]=meshgrid(x,t);   % 得到所有计算点的 x 坐标和 t 坐标+ ]6 s. M6 j. _- x0 X. F! m
mesh(x,t,Phi)          % 绘制 (x,t,Phi) 的三维网格图' x* _' R/ a. b* h
xlabel('x') 0 I  o, E. E' O. M* q, \! T8 ?
ylabel('t')% ?4 U# z, T, V* R  v* ?- F
zlabel('\Phi(x,t)')
5 O5 h+ |; s; N) g( Xtitle('扩散方程的数值模拟')
% C! S: y( ]$ i) Q6 I2 j; r, D; Kview(75,50)1 x+ m9 ]7 E5 k- n- y

4 r3 w$ }- x+ E5 [( }, ]
作者: wu68aq    时间: 2020-3-11 17:01
MATLAB实现偏微分方程(扩散方程)的有限差分求解法。




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2