`import numpy as np
import matplotlib.pyplot as plt
import scipy
c=299792458 #speed of light in nanometers per second
h=6.62607015e-34 #plank's constant in m^2 kg per s
kB=1.380649e-23 #Boltzmann's constant in m^2 kg per s^2 K
π=np.pi
def F(λ,n):
return ((2*π*h*c**2)/λ**5)*(1/(np.exp((h*c)/(λ*kB*n))-1))
def integrand0(λ):
return F(λ,10800)
T=np.linspace(3000,12000,46)
import scipy.integrate as integrate
for n in T:
def integrand(λ):
return F(λ,n)
mU=-2.5*(np.log10(integrate.quad(integrand,325e-9,395e-9))-np.log10(integrate.quad(integrand0,325e-9,395e-9)))
print('T=',n,'mU=',mU[0])
print(mU[0])
我能夠看到不同 n 的 mU 的不同值是什么,并用其他代碼檢查了這一點,但是當我嘗試在 for 回圈之外列印 mU[0] 時,我只得到一個標量(最終值) 而不是串列,如何確保將不同的值合并到陣列的元素中?
uj5u.com熱心網友回復:
您擁有的 for 回圈中的每次迭代都將覆寫前一個mU. 如果您希望在回圈運行后從回圈中訪問中間值,則需要在值被覆寫之前存盤它們。
我對您的問題的理解是,您希望將每個迭代結果存盤到一個串列中,您可以使用索引回傳該串列。為此,您可以使用list.append(). 請參閱此處的檔案。
你可以使用這樣的東西
mUlist = []
for n in T:
def integrand(λ):
return F(λ,n)
mU=-2.5*(np.log10(integrate.quad(integrand,325e- 9,395e)-9))np.log10(integrate.quad(integrand0,325e-9,395e-9)))
mUlist.append(mU) # Or mUlist.append(mU[0]) to store only the first value
print('T=',n,'mU=',mU[0])
print(mUlist[0])
uj5u.com熱心網友回復:
每次 for-loop 迭代都重寫mU名稱,因此在 for-loop 作業后,您只能獲得mU在最后一次 for-loop 迭代中創建的內容。
如果您需要mU從每個回圈中獲取所有內容,則需要在回圈之前創建一些串列并將mU每次回圈迭代附加到該串列。
最后你得到了你需要的清單。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/525605.html
