teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

訂正

2017/11/14 06:53

投稿

mkgrei
mkgrei

スコア8562

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
+ ```