0

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

私は星形成銀河の色(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 
+0

を使用し、 IGMモジュールはどこから来たのですか?また、正しく動作するようにコードをインデントしてください。 –

+0

視覚的な検証のためのサンプルデータとそのプロットはどこにありますか? – Spektre

答えて

0

私がコメントするのに十分高い評判を持っていないが、これはあなたの問題を解決することがありますので、私はその答えを推測します。すべてのy座標をリストに格納し、max(リスト)関数を使用して最大値を探します。あなたが注文したペアをしたい場合は、(Y、X)のタプルとして、あなたの座標を格納し、あなたのコードを実行しようとする場合があります誰のために最大(リスト)

lst = [(3,2), (4,1), (1, 200)] 
max(lst) 

利回り(4,1)

+0

これは十分に正確ではありません...補間再構成が必要です(サブピクセル精度と同様に隣接する勾配と交差するような)精度は曲率に依存しますので、データなしでどの補間を使用するのかは難しい)私はこのようなことを思いついた:[アルゴリズム:双線形補間の逆数を計算する方法は?](http://stackoverflow.com/a/23103173/2521214)。 [Approximation search](http://stackoverflow.com/a/36163847/2521214)などのような別のアプローチもあります。 – Spektre

関連する問題