Python 为什么我在尝试计算具有较大初始值的值时会不断出现溢出错误?

Python 为什么我在尝试计算具有较大初始值的值时会不断出现溢出错误?,python,Python,我正在完成Coursera的在线课程,作为测验的一部分,我必须更改代码的初始条件 问题是: 水深最初为1000,时间步长为100。水深必须更改为1,时间步长相应降低,以避免数学不稳定。我做到了这一点,并且图形在1米深度处似乎稳定,时间步长为25。然后必须将初始温度更改为400(温度列表)。我试图用这些新的初始条件来确定零时刻的能量通量。初始温度为400时,溢出计算会出错。代码如下: 我的代码: import matplotlib.pyplot #nSteps = int(input("

我正在完成Coursera的在线课程,作为测验的一部分,我必须更改代码的初始条件

问题是: 水深最初为1000,时间步长为100。水深必须更改为1,时间步长相应降低,以避免数学不稳定。我做到了这一点,并且图形在1米深度处似乎稳定,时间步长为25。然后必须将初始温度更改为400(温度列表)。我试图用这些新的初始条件来确定零时刻的能量通量。初始温度为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')

为什么会发生此错误?我如何完成计算?

您的数字可能太大了。您需要找到一种方法使其变小。
温度列表[-1]
的值是多少?0x5453最初是400,但这就是发生错误的原因。我想是因为一个四次方的数字太大了,你的数字可能太大了。您需要找到一种方法使其变小。
温度列表[-1]
的值是多少?0x5453最初是400,但这就是发生错误的原因。我想是因为一个四次方的数字太大了。