上一篇实现了一维热传导方程数值解,这一篇实现二维热传导方程数值解。
套路是一样的,先列微分方程,再改为差分方程,然后递推求解,不同的是一维热传导需要三维显示,而二维热传导需要四维,因此最后做了个三维动态图。
二维热传导方程如下:
另外四条边界都是0。
写成差分方程为:
整理一下就能得到u(i+1,j,k)。
matlab代码如下:
clear all;close all;clc;
t = 0.03; %时间范围,计算到0.03秒
x = 1;y = 1; %空间范围,0-1米
m = 320; %时间t方向分320个格子
n = 32; %空间x方向分32个格子
k = 32; %空间y方向分32个格子
ht = t/(m-1); %时间步长dt
hx = x/(n-1); %空间步长dx
hy = y/(k-1); %空间步长dy
u = z