You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求解金属杆热传导方程:一端100℃一端0℃的数值实现

FTCS格式求解一维金属杆热传导问题

针对一端维持100℃、另一端维持0℃的金属杆热传导问题,我用FTCS(Forward-Time Centered-Space)显式格式实现了热传导方程的数值求解,下面是基于Python的完整代码,依赖numpy和matplotlib库:

完整实现代码

import numpy as np
import matplotlib.pyplot as plt

# 设置模拟核心参数
dt = 0.0005    # 时间步长
dy = 0.0005    # 空间步长
k = 10**(-4)   # 热扩散系数
y_max = 0.04   # 金属杆总长度
t_max = 1      # 总模拟时长
T0 = 100       # 左端恒定温度

def FTCS(dt, dy, t_max, y_max, k, T0):
    # 计算FTCS格式的稳定性参数s(傅里叶数)
    s = k * dt / dy**2
    # 生成空间坐标节点数组
    y = np.arange(0, y_max + dy, dy)
    # 生成时间点数组
    t = np.arange(0, t_max + dt, dt)
    # 获取总时间步数和空间节点数
    r = len(t)
    c = len(y)
    # 初始化温度场数组,默认全0(对应右端初始0℃边界)
    T = np.zeros([r, c])
    # 设置左端边界条件:所有时间步下温度恒定为T0
    T[:, 0] = T0
    
    # 时间迭代求解温度场
    for n in range(0, r - 1):
        for j in range(1, c - 1):
            # FTCS格式的温度更新公式
            T[n+1, j] = T[n, j] + s * (T[n, j-1] - 2*T[n, j] + T[n, j+1])
    
    return y, T, r, s

# 调用求解函数
y, T, r, s = FTCS(dt, dy, t_max, y_max, k, T0)

# 可选:绘制不同时间点的温度分布曲线
plt.figure(figsize=(10,6))
# 选取几个关键时间点可视化
time_indices = [0, int(r/4), int(r/2), r-1]
plot_colors = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728']
for idx, ti in enumerate(time_indices):
    plt.plot(y, T[ti], color=plot_colors[idx], label=f't = {round(ti*dt,3)}s')
plt.xlabel('Position (m)')
plt.ylabel('Temperature (℃)')
plt.title('Temperature Distribution Along the Metal Rod')
plt.legend()
plt.grid(alpha=0.3)
plt.show()

关键说明

  • 稳定性校验:FTCS是显式格式,必须满足s ≤ 0.5才能保证数值稳定,本次参数计算得到s = 0.2,符合稳定条件
  • 边界条件:代码中左端固定为100℃,右端因初始数组全0且迭代中未修改,自动保持0℃,完全匹配问题要求
  • 返回值解析:函数返回空间坐标数组y、完整温度场数组T(行对应时间步,列对应空间节点)、总时间步数r以及稳定性参数s

内容的提问来源于stack exchange,提问作者Googlebot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:33:34