python - 为什么在尝试计算具有较大初始值的值时总是出现溢出错误?
问题描述
我正在 Coursera 上完成一门在线课程,作为测验的一部分,我必须更改代码的初始条件。
问题:水深最初为1000,时间步长为100。为了避免数学不稳定,水深必须改为1,时间步长相应递减。我实现了这一点,图表在 1 m 深度处似乎稳定,时间步长为 25。然后必须将初始温度更改为 400(温度列表)。我正在尝试使用这些新的初始条件在零时间确定 energyOutflux。初始温度为 400 时,会发生溢出计算错误。代码如下:
我的代码:
import matplotlib.pyplot
#nSteps = int(input(""))
timeStep = 25 # years
waterDepth = 1 # meters
heatCapacity = 4171448000 # J/m2K
L = 1350 # W/m2
albedo = 0.3
epsilon = 1
sigma = 5.76E-8 # W/m2 K4
energyInflux = L * (1-albedo)/4 # J/m2
yearSeconds = 31540000 # secs
time_list = [0]
temperature_list = [400]
energy_list = []
iSurfaceHeatT = heatCapacity * temperature_list[0]
for time in range(0,100):
energyOutflux = (epsilon*(sigma)*pow(temperature_list[-1], 4)) # Outgoing flux
deltaT = (energyInflux - energyOutflux) * timeStep * yearSeconds # flux change
surfaceHeatT = iSurfaceHeatT + deltaT # surface heat content after time step
planetaryT = surfaceHeatT / heatCapacity
temperature_list.append(planetaryT + temperature_list[-1]) # add new planetary temperature value to last value in array
time_list.append(timeStep + time_list[-1])
energy_list.append(energyOutflux)
我不断收到以下错误:
energyOutflux = (epsilon*(sigma)*pow(temperature_list[-1], 4)) # Outgoing flux
OverflowError: (34, 'Result too large')
为什么会出现此错误,如何完成计算?
解决方案
推荐阅读
- mysql - 在历史表中搜索时间戳中的一行,太慢了
- android - 由于 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED,无法在模拟器上运行应用程序
- c++ - 交换两个复杂结构的最快方法是什么?
- google-pay - 为 Pass 设置 Google Pay API
- rest - 在 c# 控制台中发出 REST API 请求(GET/POST/PUT/DELET)
- python - 跨多个进程和模块共享的全局可修改对象
- pagespeed - PageSpeed 洞察 Google
- bash - 如何从文件中读取并将其内容转换为bash中的多个变量
- amazon-web-services - 使用 AWS Corda Enterprise 模板在 Corda 节点之间执行事务时无法连接到负载均衡器
- codeigniter - 将 form_validation 调用设为私有