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
1.png
(150.89 KB, 下载次数: 11)
下载附件
保存到相册
2020-3-11 10:19 上传
/ s4 u- g6 ?. J( R& O- }
, E E0 d8 _% @$ J$ \2 Z/ S
%% 定义 (x,t) 平面上的网格点坐标
2 o- w* o# W) Z
clear;clc;close all
1 L# ]0 i6 C% U( B0 [; @
dx=0.05; % x 方向的步长
6 u; K" {( p7 v+ S5 S( } X
dt=0.001; % t 方向的步长
; \/ \$ R8 t4 r d5 ~& E
x=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: N
N=length(t)-1; % 计算 t 方向的分段数
" X. b# N. @5 s C$ S- t
9 e8 j" _! R- S
Phi=ones(N+1,M+1); % 生成一个初始值全部为 1 的矩阵
# M- q3 c3 S$ U# t
Phi(1,: )=50; % 设置初值条件: Phi(x,0)=50
+ U) F! k/ L5 `/ C) a1 m
Phi(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 v
5 `, ]% M& I. T; _: l' h& F' u- P" v
%% 根据推导出的差分方程, 计算偏微分方程的数值解
3 n. S( @: M. r! O9 g3 ~/ s
for 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 s
figure
$ 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( X
title('扩散方程的数值模拟')
% C! S: y( ]$ i) Q6 I2 j; r, D; K
view(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