二维热扩散建模中for循环的索引错误排查请求
二维热扩散建模索引错误排查及修复
问题根源
- 索引越界:循环变量
n的范围是0~99(N=100),当n=99时,n+1=100,超出了N×N数组的最大索引99,导致T[0][n+1]、T[n+1][0]等操作触发索引错误。 - 错误赋值逻辑:循环内重复对边界赋值,且
T[0][n] = Twall1+Twall2完全不符合需求(第一面墙应设为50℃,而非两者相加)。 - 中间区域赋值位置错误:室内空气温度的赋值被放在循环内,会重复执行且逻辑混乱。
修正后的代码
import numpy as np N = 100 # 温度参数 Tair = 20 Twall1 = 50 # 第一面墙 Twall2 = 40 # 第二面墙 Twall34 = 0 # 其余两面墙 # 初始化温度数组 T = np.empty([N, N]) # 设置边界温度 T[0, :] = Twall1 # 第一行(全列)设为50℃ T[:, 0] = Twall2 # 第一列(全行)设为40℃ T[-1, :] = Twall34 # 最后一行设为0℃ T[:, -1] = Twall34 # 最后一列设为0℃ # 设置内部区域初始温度为20℃ T[1:-1, 1:-1] = Tair
关键修正点
- 用numpy切片赋值替代循环,彻底避免索引越界,同时代码更简洁高效。
- 明确区分各边界的赋值逻辑,对应建模要求的四面墙体温度。
- 单独对内部区域(排除所有边界)赋值初始空气温度,逻辑清晰无冗余。
内容的提问来源于stack exchange,提问作者MilkShake
相关产品推荐
相关产品推荐

