【发布时间】:2017-12-17 00:42:21
【问题描述】:
我正在使用蒙特卡洛方法进行数值积分。我已经设法使函数工作,但现在我正试图将结果存储在一个矩阵中,这样我就可以将所有内容绘制在一起。
这是我的错误: ``Traceback(最近一次通话最后): 文件“mcmc.py”,第 41 行,在 result_array = 列表(fnArea) TypeError: 'float' 对象不可迭代
这是我的代码:
from math import *
from random import *
import numpy as np
def f(a):
return sin(a)
amin = 0.0
amax = 2.0*pi
numRep = 100 #quanto maior, mais preciso porem mais devagar
bmin = f(amin)
bmax = bmin
for i in range(numRep):
a = amin + (amax - amin) * float(i)/numRep
b = f(a)
if b < bmin: bmin = b
if b > bmax: bmax = b
retArea = (amax - amin)*(bmax - bmin) #definicao da integral
numPontos = 100
soma = 0
for j in range(numPontos):
a = amin + (amax - amin) * random()
b = bmin + (bmax - bmin) * random()
if fabs(b) <= fabs(f(a)):
if f(a) > 0 and b > 0 and b <= f(a):
soma += 1
if f(a) < 0 and b < 0 and b >= f(a):
soma -= 1
fnArea = retArea * float(soma)/numPontos
print (str(fnArea))
result_array = np.empty((0,100))
count = 100
for i in range(count):
fnArea = retArea * (soma)/numPontos
result_array = list(fnArea)
print (result_array)
【问题讨论】:
-
您是否要创建列表并存储在
result_array中?请参阅下面的答案。
标签: python python-3.x