これは天文学ですが、私の質問はおそらく非常に基本的だと思います - 私はあまり経験はありません、私はお詫びします。最大値を求める方法。リニアプロットの点
私は星形成銀河の色(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