2017-08-13 20 views
0

私はchi squareのコードを書いた。それは正しいが、問題がある。 最後の行では、合計関数としてσを示すc=c+chiがあります。 問題はc=c+chiです。前の用語をo_mに追加してください。 o_m=20の場合はco_m=21の場合はco_m=22の場合はcの1つを持つ必要があります。しかし、コードの最終行でc=c+chiを使用して、我々は、o_m=2122のC o_m=20の Cを有するようにo_mの= 21と2223と、c。 つまり、o_mのアウトプットを560,565,571,574、...とする必要がある場合、この問題は、出力を 560,1048,1563,2073、... c=c+chiにする必要があります。 zは、それぞれo_mのデータファイルに由来します。カイ二乗コードの注文

私のコードの注文に間違いがありますか?私はあなたの助けとあなたの注意

from math import * 
import numpy as np 
from scipy.integrate import quad 
min=l=a=b=chi=None 
c=0 
z,mo,err=np.genfromtxt('Union2.1_z_dm_err.txt',unpack=True) 
def ant(z,o_m):   #0.01*o_m is steps of o_m 
    return 1/sqrt(((1+z)**2*(1+0.01*o_m*z)-z*(2+z)*(1-0.01*o_m))) 
for o_m in range(20,40): 
    for i in range(len(z)): 
    q=quad(ant,0,z[i],args=(o_m,))[0]  #Integration o to z 
    h=5*log10((1+z[i])*(299000/70)*q)+25  #function of dL 
    chi=(mo[i]-h)**2/err[i]**2    #chi^2 test function 
    c=c+chi 
    l=o_m 
print('chi^2=',c,'Om=',0.01*l,'OD=',1-0.01*l) 
+0

でそれを追加感謝

はあなたの友人に感謝します。正しい。 – Ethan

答えて

0

コード

for o_m in range(20,40): 
    c = 0 
    for i in range(len(z)): 
関連する問題