0
私はchi squareのコードを書いた。それは正しいが、問題がある。 最後の行では、合計関数としてσを示すc=c+chi
があります。 問題はc=c+chi
です。前の用語をo_m
に追加してください。 o_m=20
の場合はc
、o_m=21
の場合はc
、o_m=22
の場合はc
の1つを持つ必要があります。しかし、コードの最終行でc=c+chi
を使用して、我々は、o_m=21
と22
のC o_m=20
の Cを有するようにo_mの= 21と22
と23
と、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)
でそれを追加感謝
はあなたの友人に感謝します。正しい。 – Ethan