辛普森在PYTHON中评估Debye公式的规则

时间:2015-03-17 15:32:01

标签: python-2.7

问题是我有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):

1 个答案:

答案 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