如何找到由积分结果组成的数组

问题描述

像这样的东西?

import numpy as np
import matplotlib.pyplot as plt

def f(theta, E=2.1):
    val = 2. / np.sqrt(E - 1 + np.cos(theta))
    return (val.sum() - np.sqrt(1. / 2.1) - np.sqrt(1. /298.)) * (np.pi / 999.)

vtheta = np.linspace(0., np.pi, 1000)
energies = np.arange(2.1, 102.1, .1)
results = []
for e in energies:
    results.append(f(vtheta, E=e))

plt.plot(energies, results)
plt.xlabel('Energy')
plt.show()

为您提供以下情节:

在此处输入图像描述

解决方法

我的代码res1中是积分的结果。我的目标是使用一个不同的变量重复这个积分 1000 次(可能使用 for 循环,但我不知道如何):

Energy = np.arange(2.1,102.1,0.1)

所以在下面的代码中,E表示能量,但它是该数组的第一个变量。我想要一个由积分结果组成的数组(通过将 E 更改为 2.1 到 2.2 然后到 2.3)

import numpy as np
from math import pi,sqrt
vtheta=np.linspace(0.0,pi,1000)
def f(theta):
    E=2.1
    val=(2.0)/np.sqrt(E-1+np.cos(theta))
    result=(val.sum()-(sqrt(1./2.1)+sqrt(1./298.)))*((np.pi-0)/999.)
    return result
res1=f(vtheta)

当我尝试将 for 循环放入函数中时,我更改了result我不想做的内部。