이것은 천문학적이지만, 제 질문은 아마도 초등학생이라고 생각합니다. 저는 경험이별로 없어요. 사과드립니다.최대를 찾는 방법. point plot on linear plot
별 모양의 은하 (y 축)와 적색 편이 (x 축) 사이의 관계를 계획하고 있습니다. 줄거리는 0에서 9까지 올라간 다음 다시 -2 정도로 줄입니다. 피크 (~ 9 색)는 적색 변이의 관점에서 약 4이며, 더 정확하게 피크를 찾고 싶습니다. 적색 변속은 상당히 혼란스러운 기능에 의해 주어지며, 어떻게 차별화해야 하는지를 알 수 없으며, 그렇지 않으면 단지 그렇게 할 것입니다.
아마도 복잡한 적색 편이 (z) 함수를 구별 할 수 있습니까? 그렇다면 어떻게?
그렇지 않은 경우 그래픽/숫자로 최대치를 계산하려면 어떻게해야합니까?
대단히 죄송합니다. 사전에 진심으로 감사드립니다. 내 코드는 아래와 같습니다.
import numpy as np
import matplotlib.pyplot as plt
import IGM
import scipy.integrate as integrate
SF = np.load('StarForming.npy')
lam = SF[0]
SED = SF[1]
filters = ['f435w','f606w','f814w','f105w','f125w','f140w','f160w']
filters_wl = {'f435w':0.435,'f606w':0.606,'f814w':0.814,'f105w':1.05,'f125w':1.25,'f140w':1.40,'f160w':1.60} # filter dictionary to give wavelengths of filters in microns
fT = {} # this is a dictionary
for f in filters:
data = np.loadtxt(f+'.txt').T
fT[f]= data
fluxes = {}
for f in filters: fluxes[f] = [] # make empty list for each
redshifts = np.arange(0.0,10.0,0.1) # redshifts going from 0 to 10
for z in redshifts:
lamz = lam * (1. + z)
obsSED = SED * IGM.madau(lamz, z)
for f in filters:
newT = np.interp(lamz,fT[f][0],fT[f][1]) # for each filter, refer back
bb_flux = integrate.trapz((1./lamz)*obsSED*newT,x=lamz)/integrate.trapz((1./lamz)*newT,x=lamz)
# 1st bit integrates, 2nd bit divides by area under filter to normalise filter
# loops over all z, for all z it creates a new SED, redshift wl grid
fluxes[f].append(bb_flux)
for f in filters: fluxes[f] = np.array(fluxes[f])
colour = -2.5*np.log10(fluxes['f435w']/fluxes['f606w'])
plt.plot(redshifts,colour)
plt.xlabel('Redshift')
plt.ylabel('Colour')
plt.show
, IGM 모듈은 어디에서 왔습니까? 또한 올바르게 작동하도록 코드를 들여 씁니다. –
시각적 검증을위한 샘플 데이터와 그 플롯은 어디에 있습니까 (누구나 코드를 작성하려고한다면)? – Spektre