ガウス関数を定義し、その全体の積分値と点tを中心とする幅0.02e-9の区間の積分値の比を取って、横軸がt縦軸が比となるように、matplotlibを使い図示したいが、次のようなエラーが出てしまいます。どのように改善したらよいでしょうか?
The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
python
1import numpy as np 2import matplotlib.pyplot as plt 3 4#あるガウス関数をを定義 5def f(x): 6 delta = 0.017 7 A = 2 * np.log(2) 8 I1 = 4 * ((9.3894 * 10 ** 7)) * np.exp(-((x - (468.5376849) * 10 ** (-9)) / ((delta / A) * 10 ** (-9))) ** 2) 9 I2 = 4 * ((4.9071 * 10 ** 7)) * np.exp(-((x - (468.5407225) * 10 ** (-9)) / ((delta / A) * 10 ** (-9))) ** 2) 10 I3 = 2 * ((9.7947 * 10 ** 6)) * np.exp(-((x - (468.5524404) * 10 ** (-9)) / ((delta / A) * 10 ** (-9))) ** 2) 11 I4 = 2 * ((4.9070 * 10 ** 7)) * np.exp(-((x - (468.5568006) * 10 ** (-9)) / ((delta / A) * 10 ** (-9))) ** 2) 12 I5 = 6 * ((2.0600 * 10 ** 8)) * np.exp(-((x - (468.5703849) * 10 ** (-9)) / ((delta / A) * 10 ** (-9))) ** 2) 13 I6 = 6 * ((1.1266 * 10 ** 8)) * np.exp(-((x - (468.5704380) * 10 ** (-9)) / ((delta / A) * 10 ** (-9))) ** 2) 14 I7 = 4 * ((5.5631 * 10 ** 5)) * np.exp(-((x - (468.5757080) * 10 ** (-9)) / ((delta / A) * 10 ** (-9))) ** 2) 15 I8 = 4 * ((1.1266 * 10 ** 7)) * np.exp(-((x - (468.5757974) * 10 ** (-9)) / ((delta / A) * 10 ** (-9))) ** 2) 16 I9 = 8 * ((2.2070 * 10 ** 8)) * np.exp(-((x - (468.5804092) * 10 ** (-9)) / ((delta / A) * 10 ** (-9))) ** 2) 17 I10 = 6 * ((1.4716 * 10 ** 7)) * np.exp(-((x - (468.5830890) * 10 ** (-9)) / ((delta / A) * 10 ** (-9))) ** 2) 18 I11 = 4 * ((5.0067 * 10 ** 6)) * np.exp(-((x - (468.5884123) * 10 ** (-9)) / ((delta / A) * 10 ** (-9))) ** 2) 19 I12 = 4 * ((5.0067 * 10 ** 6)) * np.exp(-((x - (468.5884123) * 10 ** (-9)) / ((delta / A) * 10 ** (-9))) ** 2) 20 I13 = 2 * ((5.5636 * 10 ** 6)) * np.exp(-((x - (468.5917884) * 10 ** (-9)) / ((delta / A) * 10 ** (-9))) ** 2) 21 y=I1+I2+I3+I4+I5+I6+I7+I8+I9+I10+I11+I12+I13 22 return y 23 24x=np.linspace(468.48*10**(-9),468.65*10**(-9),10000) 25 26 27from scipy import integrate 28 29#ある点tを中心に幅0.02*10**(-9)の区間を積分する 30def g(t): 31 a=integrate.quad(f,t-0.01*10**(-9),t+0.01*10**(-9)) 32 wide = integrate.quad(f, 468.48 * 10 ** (-9), 468.65 * 10 ** (-9)) 33 ratio=wide[0]/a[0] 34 return ratio 35 36t = np.linspace(468.49*10**(-9),468.64*10**(-9),10000) 37 38#横軸t、縦軸ratioで図示する 39plt.plot(t,g(t)) 40plt.show() 41
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/03 00:45 編集
2018/10/03 01:10 編集
2018/10/03 07:30 編集
2018/10/03 08:07
2018/10/04 01:15