首页 > 解决方案 > 为什么在尝试计算具有较大初始值的值时总是出现溢出错误?

问题描述

我正在 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')

为什么会出现此错误,如何完成计算?

标签: python

解决方案


推荐阅读