【发布时间】:2021-02-08 10:41:42
【问题描述】:
现在我有两个函数分别是
rho(u) = np.exp((-2.0 / 0.2) * (u**0.2-1.0))
psi( w(xu) ) = (1/(4.0 * math.sqrt(np.pi))) * np.exp(- ((w * (xu))**2) / 4.0) * ( 2.0 - (w * (xu))**2)
然后我想将 'rho(u) * psi( w(x-u) )' 与 'u' 积分。这样积分结果可以是关于'w'和'x'的一个函数。
这是我尝试求解这个积分时的 Python 代码 sn-p。
import numpy as np
import math
import matplotlib.pyplot as plt
from scipy import integrate
x = np.linspace(0,10,1000)
w = np.linspace(0,10,500)
u = np.linspace(0,10,1000)
rho = np.exp((-2.0/0.2)*(u**0.2-1.0))
value = np.zeros((500,1000),dtype="float32")
# Integrate the products of rho with
# (1/(4.0*math.sqrt(np.pi)))*np.exp(- ((w[i]*(x[j]-u))**2) / 4.0)*(2.0 - (w[i]*(x[j]-u))**2)
for i in range(len(w)):
for j in range(len(x)):
value[i,j] =value[i,j]+ integrate.simps(rho*(1/(4.0*math.sqrt(np.pi)))*np.exp(- ((w[i]*(x[j]-u))**2) / 4.0)*(2.0 - (w[i]*(x[j]-u))**2),u)
plt.imshow(value,origin='lower')
plt.colorbar()
如上所示,当我进行集成时,我使用了嵌套 for 循环。我们都知道这样的方式是低效的。
所以想问问有没有不使用for循环的方法。
【问题讨论】:
标签: python numpy scipy numerical-integration