使用显式欧拉discretisation一维热传导

9的观点(30天)
我试图解决一个问题关于热传导。我有写一个代码和使用方法,我知道我试图解决它,但当我使T0矩阵我错误因为我要从0开始开尔文,它给了我一个错误。附件是一个图像我试图解决的问题。
% %清算
clc
清晰的
关闭所有
% %初始化
L = 1;
t = 100;
k = 0.01;
元= 500;
dx = 0.05;
n = L / dx;
dt = 0.5;
x = 0: dx: L;
α= k * dt / dx ^ 2;
T0 = 0 * 1 (1, n);
T1 = 20 * 1 (1, n);
T0 (1) = 0;
T0(结束)= 20;
% %解决
j = 1: nt
我= 2:n - 1
T1 (i) = T0 (i) +α* (T0 (i + 1) 2 * T0(我)+ T0(张));
结束
T0 = T1;
结束
% %策划
timeset = [0 1 5 100);%的时间瞬间需要
i = 1:长度(timeset)% 1在timeset的元素数量
z = timeset(我);%的时间即时
ntset = z / dt + 1;%时间即时提取相应的步骤
人物,情节(x, T1 (:, ntset))%绘制温度和距离
ylabel (“温度(°C)”)%标签y轴
包含(“距离(m)”)% x轴标签
标题(温度的分布)%的图
网格%的详细视图
结束
指数在位置2超出数组边界。指标不得超过20。

接受的答案

威廉•罗斯
威廉•罗斯 2022年8月8日
注意长度(x) = 21,但是你的n = 20。这将导致问题。我建议您初始化有点不同,如下所示。
我不明白为什么你有向量T0和T1。我建议T0和T1是标量。我建议您创建一个数组,称为T T的每一行对应一次。T的每一列对应一个位置在酒吧。
% %初始化
L = 1.0;dx = 0.05;x = 0: dx: L;nx =长度(x);%的空间
达峰时间= 30;dt = 0.05;t = 0: dt:最高温度;元=长度(t);%的时间
α= 0.01;%热扩散率,m ^ 2 / s
T0 = 0;%左温度
T1 = 20;%对termperature
T = 0 (nt、nx);%为温度分配数组
T (: 1) = T0;%的左temp = T0
:T (1) = T0;%的初始temp = T0位置
T(:,结束)= T1;%做出正确的temp = T1
解决这个问题。
我= 2:nt
j = 2: nx-1
T (i, j) =(张,j) +α* (dt / dx ^ 2) * (T(张,j + 1) 2 * T(张,j) + T(张,j - 1));
结束
结束
一些结果。
情节(x, T (1:)“- r”,x, T(101年:)“- y”,x, T(201年:)“g”,x, T(301年:)“c”,
x, T(401年:)“- b”,x, T(501年:)“- m”,x, T(601年:)“- r”);
网格;标题(温度与位置和时间的)
包含(“位置(m)”);ylabel (“温度(K)”)
传奇(t = 0年代”,“t = 5 s”,“t = 10 s”,“t = 15秒”,“t = 20年代”,' t = 25 s ',“t = 30年代”);
当我跑代码与dt = 0.5年代,该国的解决方案,给结果如T = + / -10 ^ 167后100秒。这种情况如果时间步长太大。所以我减少了时间步长10倍:dt = 0.05 s。然后我得到了合理的结果,如上图所示。
学习如何使用冲浪()做一个漂亮的3 d图与轴的位置,时间,温度。
2的评论

登录置评。

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!