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

绘制放射性同位素功率输出指数曲线出错,请求技术协助

问题解决:放射性同位素功率随时间变化曲线绘制

核心问题分析

你的代码存在三个关键问题,导致无法输出正确的指数衰减曲线:

  • 时间单位不匹配:你将衰减常数λ转换为秒⁻¹,但时间t仅取0-49秒。对于半衰期5.27年的Co-60来说,这么短的时间内衰减幅度极小,肉眼几乎看不到变化。
  • 不必要的exp手动替代:用2.718**x既存在精度损失,也没必要——math.exp不支持数组运算,但np.exp专门适配numpy数组,完全可以直接使用且不会报错。
  • 语法错误:计算co60的代码末尾多了一个闭合括号,会直接触发语法报错。

修正后的代码

import matplotlib.pyplot as plt
import numpy as np

# 定义常数,用科学计数法更简洁清晰
ln2 = 0.693
avon = 6.02214076e23
mev_to_j = 1.6e-13
half_life_years = 5.27

# 生成时间序列:0到20年,取100个点让曲线更平滑
t = np.linspace(0, 20, 100)

# 计算年衰减常数λ,和时间单位统一
lambda_decay = ln2 / half_life_years

# 拆分计算:先算初始功率P0,再乘以衰减项e^(-λt)
P0 = (lambda_decay * avon * mev_to_j * 2.505) / 60
co60_power = P0 * np.exp(-lambda_decay * t)

plt.plot(t, co60_power, label='Co-60')
plt.xlabel('时间 (年)')
plt.ylabel('功率 (W)')
plt.legend()
plt.grid(True)
plt.show()

关键调整说明

  1. 单位统一:将衰减常数λ和时间t统一为年,这样能直观看到Co-60的衰减趋势(20年约为3.8个半衰期,功率会降到初始值的6%左右)。
  2. 使用np.exp:numpy的exp函数支持数组批量运算,避免手动幂运算的精度问题,代码逻辑也更清晰。
  3. 拆分计算步骤:把初始功率P0和衰减项分开计算,便于排查公式转译错误。
  4. 平滑时间序列:用np.linspace生成更多时间点,让绘制的曲线更顺滑。

额外提示

如果一定要用秒作为时间单位,需要将t设置为足够大的范围(比如覆盖0到4个半衰期,每天取一个点:np.arange(0, 5.27*365*24*3600*4, 86400)),同时保持λ的单位为秒⁻¹,也能得到正确的衰减曲线,但数值会极大,需要注意坐标轴刻度设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 19:10:19