我有这段代码:
from __future__ import division
import matplotlib.pyplot as plt
import os
import numpy as np
import copy
import random
import math
A_bb=9.2572264*10**(-45)
E_bb=4.8043478/10**11
x=np.arange(0,20,0.01)
def func(x,T):
x=np.array(x)
return A_bb*(10**x)**3/(np.exp(10**x*E_bb/T)-1)
popt,pcov=curve_fit(func,frec, Flux_57442_27165)
print (popt)
基本上我想将黑体曲线拟合到某些数据点。但是我得到了这个错误:
overflow encountered in exp w=A_bb*(10**x)**3/(np.exp(10**x*E_bb/T1)-1)
预计T I的值为10 ^ 4。有什么问题,如何解决?
答案 0 :(得分:0)
Python的本地long
类型,来自documentation只能存储最多2 ^ 32的整数:
普通整数(也称为整数)是用C中的long实现的,它给出了至少32位的精度
为了解决这个问题,Python还提供了long()
数据类型:
长整数具有无限的精度。
如果遇到溢出,只需将T
应用于T = long(T)
:
{{1}}
并希望它有效。
如果即便失败,我强烈建议您使用numpy
代替much more powerful datatypes。