计算积分中的变量值

2024-06-11 20:44:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用普朗克函数计算黑体光谱辐射:

import numpy as np
import matplotlib.pyplot as plt
from scipy import interpolate, integrate


# Physical constants:
h = 6.6260693e-34                
c = 299792485.0                
k = 1.380658e-23               
T = 6500

wl_min = 0.1
wl_max = 8.0
wl = np.linspace(wl_min, wl_max, 1000)

f = ((((2.0*h*c**2)/(wl*1e-6)**5)*(1.0/(np.exp(((h*c)/(k*T*wl*1e-6)))-1)))*1e-6)

plt.figure()
plt.plot(wl, f)
plt.show()

plot

然后我积分了波长范围(从0.1到8.0),得到了3.22e7[W]的功率

Power = integrate.trapz(f,wl)

现在,我的问题

我想做相反的事情:知道功率值,找到温度值。 我可以在Matlab中完成,但我不知道如何在python中完成:

matlab code

你能帮我吗


Tags: 函数importnumpyplotasnpplt光谱
1条回答
网友
1楼 · 发布于 2024-06-11 20:44:39

如果对其他人有用,这里有一个解决方案:

from scipy.optimize import newton_krylov

fun = lambda T2: - Power + integrate.trapz(((((2.0*h*c**2)/(wl*1e-6)**5)*(1.0/(np.exp(((h*c)/(k*T2*wl*1e-6)))-1)))*1e-6),wl)

res = scipy.optimize.newton_krylov(fun, 6000)

相关问题 更多 >