第一次在这里发帖,目前正在为 uni 做一个项目,我有点卡住了。
这部分任务是使用蒙特卡罗方法来估计一个积分的值(在这种情况下,我们正在积分的函数是 f(r)。这是我当前的代码:
import numpy as np # import numpy
from scipy.optimize #import broyden1
def U(r, ep, sig):
return 4*ep*((sig/r)**(12)-(sig/r)**(6)) # return U(r)
# Function to calculate f(r)
def f(r, ep, sig):
Ur = 4*ep*((sig/r)**(12)-(sig/r)**(6)) # puts U(r) into this function
return (1-np.exp(-Ur/(k*T)))*(r**2) # return f(r)
data = np.array([[2.56,3.75,3.4,4.07],[1.41,1.32,1.66,3.04]]) #He, N2, Ar, Xe
k = 1.38*10**-23 # Boltzmann constant
T = 300 # temperature value T
R = np.linspace(1*10**-10, 10, 1000) # r defined with 1000 values between 2.5 and 10
U = U(R, data[1,0], data[0,0])# calculate U((r)
F = f(R, data[1,0], data[0,0]) # calculate f(r)
cutoff = broyden1(F,6)
我收到一条错误消息“TypeError: 'numpy.ndarray' object is not callable”。我知道这是一个非常常见的错误消息,但我无法从这里的其他帖子中弄清楚我的问题是什么。
任何帮助将不胜感激,谢谢!