将一根长为一米,温度为0摄氏度的金属棒两段用温度恒定为100摄氏度的夹子夹住,求金属棒上温度分布随时间变化。
6条回答 默认 最新
- |__WhoAmI__| 2022-12-29 19:54关注
1、将金属棒划分成N小段,例如N = 100,用一个长度为100的列表Tcurent来保存当前时刻t(最开始时,当前时刻为t =0)每一段的温度,用一个同样长度的列表Tnext来保存下一个时刻t+△t每一段的温度。金属棒的比热容c为1,传热系数k为0.1,密度rho为1,时间步△r为0.0003,时间步数量为10000
N = 100 c = 1 k = 0.1 rho = 1 dt = 0.0003 num_steps = 10000 Tcurrent = [0] * N Tnext = [0] * N Tclamp = 100
2、对于最左边和最右边一段金属棒,计算下一个时刻的温度时需要特殊处理,写出用于计算最左边和最右边一段金属棒下一个时刻温度的代码
Tnext[0] = Tcurrent[0] + dt * k / (c * rho) * (Tclamp - Tcurrent[0]) Tnext[N-1] = Tcurrent[N-1] + dt * k / (c * rho) * (Tclamp - Tcurrent[N-1])
3、写出计算中间的第i段金属棒下一个时刻温度的代码
Tnext[i] = Tcurrent[i] + dt * k / (c * rho) * (Tcurrent[i-1] - 2 * Tcurrent[i] + Tcurrent[i+1])
4、在0时刻,用for循环遍历每一个小段,计算每一个小段下一时刻的温度,注意两端的小段需要特殊处理
for i in range(N): if i == 0: Tnext[i] = Tcurrent[i] + dt * k / (c * rho) * (Tclamp - Tcurrent[i]) elif i == N-1: Tnext[i] = Tcurrent[i] + dt * k / (c * rho) * (Tclamp - Tcurrent[i]) else: Tnext[i] = Tcurrent[i] + dt * k / (c * rho) * (Tcurrent[i-1] - 2 * Tcurrent[i] + Tcurrent[i+1])
5、从0时刻开始,计算金属棒温度分布随时间的变化(将上一步的for循环嵌套进另一个for循环)
for t in range(num_steps): for i in range(N): if i == 0: Tnext[i] = Tcurrent[i] + dt * k / (c * rho) * (Tclamp - Tcurrent[i]) elif i == N-1: Tnext[i] = Tcurrent[i] + dt * k / (c * rho) * (Tclamp - Tcurrent[i]) else: Tnext[i] = Tcurrent[i] + dt * k / (c * rho) * (Tcurrent[i-1] - 2 * Tcurrent[i] + Tcurrent[i+1]) Tcurrent = Tnext[:]
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
- ¥20 cad图纸,chx-3六轴码垛机器人
- ¥15 移动摄像头专网需要解vlan
- ¥20 access多表提取相同字段数据并合并
- ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
- ¥20 Java-Oj-桌布的计算
- ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
- ¥20 有人知道这种图怎么画吗?
- ¥15 pyqt6如何引用qrc文件加载里面的的资源
- ¥15 安卓JNI项目使用lua上的问题