2201_76043569 2022-12-29 19:31 采纳率: 100%
浏览 117
已结题

大学Python问题

将一根长为一米,温度为0摄氏度的金属棒两段用温度恒定为100摄氏度的夹子夹住,求金属棒上温度分布随时间变化。

img

img

  • 写回答

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[:]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 1月8日
  • 已采纳回答 12月31日
  • 创建了问题 12月29日

悬赏问题

  • ¥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上的问题