[英]Python Exponential Integration: Overflow encountered in exp
這可能已經被問過一百萬次了; 但我無法為我的具體問題找出解決方案。 這是我的代碼:
import numpy as np
import matplotlib.pyplot as plt
from sympy import Symbol, integrate, exp, pprint
from scipy import integrate
我正在嘗試集成一些 function,其中有一個指數,並且邊界包括一些頻率范圍,(nu = 1e2,1e3/3),所以我應該從這個集成中得到一個點列表,但我一直遇到這個溢出錯誤,我不確定為什么。
M = 2e42
M_dot = 4e33
d = 3.1e26
G = 6.67e-8
c = 3e10
h = 6.636e-27
k = 1.38e-16
sigma = 5.67e-5
R_S = (2*G*M/c**2)
nu = np.linspace(1e2,1e3/3)
T_star = (3*G*M*M_dot/(8*np.pi*sigma*((R_S)**3)))
T_d1 = (T_star)*((2*R_S/R_S)**(-3/4))
T_d2 = (T_star)*((1000*R_S/R_S)**(-3/4))
x_in = (h*nu/k*(T_d1))
x_out = (h*nu/k*(T_d2))
my_list = ([])
a = lambda x: (x**(5/3))*(np.exp(x)-1)**(-1)
for x1,x2 in zip(x_out,x_in):
my_list.append(integrate.quad(a,x1,x2))
這給了我:RuntimeWarning:exp中遇到的溢出
我怎樣才能解決這個問題?
盡管數字非常大。 回答你的問題。
) - 1) -1 = 1/(exp( )-1) = exp(-x)/(1 - exp(-x)), to rewrite a = lambda x: (x**(5/3))*np.exp(-x) / (np.exp(-x)-1)
and this gives you zero.您可以使用關系 (exp( ) - 1) -1 = 1/(exp( )-1) = exp(-x)/(1 - exp(-x)) 來重寫a = lambda x: (x**(5/3))*np.exp(-x) / (np.exp(-x)-1)
這給你零。
*另外你在T_d1和T_d2的公式中使用了高度可疑的R_S/R_S
,c是光速嗎? 不應該是 3e8 而不是 3e10?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.