问题是我有Debye的公式并需要使用Simpson的规则来编写一个函数cv(T)来计算给定温度的Cv。 所以Cv = 9 * V p k_B *(T / theta_D) 3(从0到theta_D / T的积分)x 4 * e x /(e < / strong> x - 1)** 2 那么对于这个积分,我如何使用Simpson方法制作一个函数来评估积分?公式中,积分为0到theta_D / T.
这是我到目前为止所拥有的
from __future__ import division, print_function
from math import e
import numpy as np
# constants
V = 1000 # cm**3 of solid aluminum
p = 6.022*10**28 # number density in m**-3
k_b = 1.380*10**-23 # Boltzmann's constant in J*K**-1
theta_D = 428 # Debye temperature in K
N = 50 # sample points
def cV(T):
return 9*V*p*k_b*(T / theta_D)**3 * (x**4 * e**x / (e**x - 1)**2)
def debye(T, a, b, N):
答案 0 :(得分:0)
如果这是一个家庭作业问题,您应该将其标记为此类,并为您的函数debye
提供您尝试的代码。如果这是现实生活,那么使用scipy.integrate.quad
而不是滚动自己可能会更好:
from scipy.integrate import quad
def debye(T, a, b):
return quad(cV, a, b)[0]
无需给出正交点数:quad
为您处理此问题。请注意,您应该将被动函数cV
定义为x
的函数,而不是T
。