###前提・実現したいこと
python3.6で1/3シンプソンの公式を使って積分を求めています。
###発生している問題・エラーメッセージ
Traceback (most recent call last): File "sinpuson.py", line 23, in <module> v = (h/3) * sum(f1(h*i) + 4*f1(h*(i+1)) + f1(h*(i+2))) TypeError: 'float' object is not iterable
###該当のソースコード
python
1import math 2 3def f1(x): 4 return (x**3-2*x**2+x-1) 5def f2(x): 6 return (math.cos(x)) 7 8N = 1000 9 10a_list = [-2,0] 11b_list = [3,math.pi/2] 12cnt = 0 13v = w = h = h2 = 0 14for i in range(1,N,10): 15 h = (b_list[0]-a_list[0])/i 16 h2 = (b_list[0]-a_list[0])/i/2 17 v = (h/3) * sum(f1(h*i) + 4*f1(h*(i+1)) + f1(h*(i+2))) 18 w = (h/3) * sum(f1(h2*i) + 4*f1(h2*(i+1)) + f1(h2*(i+2))) 19 print(v,w) 20 if abs(v-w) <= 10**(-10): 21 print("(1)\n") 22 print("分割数 N = "+str(n)+"\n") 23 print("近似値 = "+str(v)+"\n") 24 break 25for i in range(1,N,10): 26 h = (b_list[1]-a_list[1])/i 27 h2 = (b_list[1]-a_list[1])/i/2.0 28 v = (h/3) * sum((f2(h*i) + 4*f2(h*(i+1)) + f2(h*(i+2)))) 29 w = (h/3) * sum((f2(h2*i) + 4*f2(h2*(i+1)) + f2(h2*(i+2)))) 30 if abs(v-w) <= 10**(-10): 31 print("(2)\n") 32 print("分割数 N = "+str(n)+"\n") 33 print("近似値 = "+str(v)+"\n") 34 break
###試したこと
floatやintは繰り返し不可能と存じましたが、対策方法がわかりません。
###補足情報(言語/FW/ツール等のバージョンなど)
なし

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/09 12:54