转载或使用文章及代码内容请注明出处为北京交通大学物理科学与工程学院,获取交互式代码q2681998418
附可执行matlab代码
一维热传导:
clc
clear all
close all
%% 设置参数
L = 1; % 长度
N = 100; % x轴方向上的格子数
dx = L/N; % 格子边长
T0 = 100; % 边界温度
%% 初始化温度分布
T = zeros(N);
T(1) = T0;
%% 模拟热传导
dt = 0.0001; % 时间步长
Tmax = 10000; % 最大模拟时间
k = 0.2; % 热传导系数
% 创建存储 GIF 图像的变量
gif_filename = 'temperature.gif';
frame_rate = 10;
% 创建图形对象
figure;
% 迭代模拟热传导并保存每次迭代的温度分布
for t = 1:Tmax
Told = T;
for i = 2:N-1
T(i) = Told(i) + k*dt*(Told(i-1)-2*Told(i)+Told(i+1))/dx^2;
end
% 绘制温度分布
x = 1:N;
T_plot = T(x);
imagesc(T_plot);
colormap jet;
colorbar;
axis equal;
axis tight;
% 保存每一帧为 GIF 图像
frame = getframe(gcf);
im = frame2im(frame);
[A,map] = rgb2ind(im,256);
if t == 1
imwrite(A,map,gif_filename,'gif','LoopCount',Inf,'DelayTime',1/frame_rate);
else
imwrite(A,map,gif_filename,'gif','WriteMode','append','DelayTime',1/frame_rate);
end
% 更新图形
drawnow;
End
二维热传导:
clc
clear all
close all
%% 设置参数
L = 1; % 矩形板长度
W = 1; % 矩形板宽度
N = 100; % x轴方向上的格子数
M = 100; % y轴方向上的格子数
dx = L/N; % 格子边长
dy = W/M;
T0 = 100; % 边界温度