回答編集履歴
1
訂正
answer
CHANGED
@@ -1,4 +1,47 @@
|
|
1
1
|
エラーの
|
2
2
|
File "problem_set_04_1b.py", line 26, in dL
|
3
3
|
return c*(1.+z)/(H0*np.sqrt(abs(1.-omega_m-omega_l)))*np.sinh(np.sqrt(abs(1.-omega_m-omega_l))*integrate.quad(integrand,0.,z))
|
4
|
-
の部分に相当するものが上に貼り付けてあるコードに含まれてないのは気のせいでしょうか?
|
4
|
+
の部分に相当するものが上に貼り付けてあるコードに含まれてないのは気のせいでしょうか?
|
5
|
+
|
6
|
+
---
|
7
|
+
追記:
|
8
|
+
不思議な質問ですね。
|
9
|
+
貼り付けてあるコードは普通に動きます。(一部numpy->npのミスがありますが)
|
10
|
+
正しく修正した後に過去のエラーを勘違いしていませんか?
|
11
|
+
i=integrate.quad(integrand,0.,z)
|
12
|
+
.....*i[0]
|
13
|
+
とご自身で訂正されています?
|
14
|
+
|
15
|
+
```python
|
16
|
+
import math
|
17
|
+
import numpy as np
|
18
|
+
import scipy.optimize
|
19
|
+
from scipy import integrate
|
20
|
+
from scipy.optimize import curve_fit
|
21
|
+
import matplotlib.pyplot as plt
|
22
|
+
import scipy
|
23
|
+
|
24
|
+
def dL(z,omega_m,omega_l,H0,c):
|
25
|
+
def integrand(x):
|
26
|
+
return 1. / np.sqrt((1.+x)**2.*(1.+x*omega_m)-x*(2.+x)*omega_l)
|
27
|
+
|
28
|
+
if omega_m + omega_l ==1:
|
29
|
+
i=integrate.quad(integrand,0.,z)
|
30
|
+
return c*(1.+z)/H0*i[0]
|
31
|
+
elif omega_m + omega_l > 1:
|
32
|
+
i=integrate.quad(integrand,0.,z)
|
33
|
+
return c*(1.+z)/(H0*np.sqrt(abs(1.-omega_m-omega_l)))*np.sin(np.sqrt(abs(1.-omega_m-omega_l))*i[0])
|
34
|
+
else:
|
35
|
+
i=integrate.quad(integrand,0.,z)
|
36
|
+
return c*(1.+z)/(H0*np.sqrt(abs(1.-omega_m-omega_l)))*np.sinh(np.sqrt(abs(1.-omega_m-omega_l))*i[0])
|
37
|
+
|
38
|
+
dL = np.vectorize(dL, excluded=("omega_m","omega_l","H0","c"))
|
39
|
+
|
40
|
+
def m_model(z,omega_m,omega_l,H0,MB,sth):
|
41
|
+
return MB + 5.0*np.log(dL(z,omega_m,omega_l,H0,sth))+25.0
|
42
|
+
|
43
|
+
def m_model_00(x):
|
44
|
+
return m_model(x,0.,0.,0.7,-1.8,1.)
|
45
|
+
|
46
|
+
print(m_model_00(0.4))
|
47
|
+
```
|