我的代码res1中是积分的结果。我的目标是使用一个不同的变量重复这个积分 1000 次(可能使用 for 循环,但我不知道如何):
res1
Energy = np.arange(2.1,102.1,0.1)
所以在下面的代码中,E表示能量,但它是该数组的第一个变量。我想要一个由积分结果组成的数组(通过将 E 更改为 2.1 到 2.2 然后到 2.3)
E
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我不想做的内部。
result
像这样的东西?
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()
为您提供以下情节: