0

我在两个程序中编写了相同的代码。但是,我只在运行一个程序时遇到错误。

这是适用的文件:

#!/usr/bin/env python

#FileName: test.py
import numpy as np
import math
mu = 0
sigma = 3

x_at_mean = math.pow(math.e, -(math.pow(mu, 2) / 2*math.pow(sigma,2))) / (sigma*math.sqrt(2*math.pi))
alpha = lambda index_array, i,j: ((((np.e**(-((np.sqrt((index_array[0]- i)**2 + (index_array[1]-j)**2) - mu)**2)/(2*sigma**2)))/(sigma*np.sqrt(2*np.pi)))*150) / x_at_mean)
xyz = np.indices((450,450))

print alpha(xyz, 35,35)

现在这里是来自不同文件的函数,使用完全相同的代码:

def gfx_create_fake_tem2(self, *args):
    mu = 0
    sigma = 3

    x_at_mean = math.pow(math.e, -(math.pow(mu, 2) / 2*math.pow(sigma,2))) / (sigma*math.sqrt(2*math.pi))
    alpha = lambda index_array, i,j: ((((np.e**(-((np.sqrt((index_array[0]- i)**2 + (index_array[1]-j)**2) - mu)**2)/(2*sigma**2)))/(sigma*np.sqrt(2*np.pi)))*150) / x_at_mean)        
    xyz = np.indices((450,450))  
    print alpha(xyz, 35, 35) 

这是我尝试调用该函数时遇到的错误:

Traceback (most recent call last):
File "/home/ian/python/tsase/xyz/xyz2.py", line 127, in <lambda>
  self.draw_tem.connect("clicked", lambda w: self.event_changeTem())
File "/home/ian/python/tsase/xyz/xyz2.py", line 495, in event_changeTem
  self.gfx_render()
File "/home/ian/python/tsase/xyz/xyz2.py", line 610, in gfx_render
  self.gfx_create_fake_tem2()
File "/home/ian/python/tsase/xyz/xyz2.py", line 921, in gfx_create_fake_tem2
  ie.gfx_create_fake_tem2()
File "/home/ian/python/tsase/xyz/imageEval.py", line 249, in gfx_create_fake_tem2
  print alpha(xyz, 35,35)
File "/home/ian/python/tsase/xyz/imageEval.py", line 247, in <lambda>
  alpha = lambda index_array, i,j: ((((np.e**(-((np.sqrt((index_array[0]- i)**2 + (index_array[1]-j)**2) - mu)**2)/(2*sigma**2)))/(sigma*np.sqrt(2*np.pi)))*150) / x_at_mean)
FloatingPointError: underflow encountered in divide

我不明白是什么导致它在一个实例中正确运行而在另一个实例中出错。我没有传入或传出任何变量,也没有使用任何全局变量。

有谁知道这可能是什么原因?

4

0 回答 0