我要进行以下积分。问题是,积分“ y”的结果取决于“ y”本身的值。因此,在右侧和左侧之间应该有一个反馈回路。 y的初始值为零。
[这里f(U)是U的高斯函数,平均值和标准偏差分别为mu和sigma。]
当LHS和RHS之间没有耦合时,我可以执行集成的简化版本。即,如果我在右侧用常数替换“ mt-y”项(请参阅我的代码,这当然不能解决实际问题)。
但是我不明白如何使用现有的耦合器进行实际的耦合。
from scipy.integrate import quad
import numpy as np
from matplotlib import pyplot as plt
def integrand_1(U,A,t,p,gamma,m,n,alpha,mu,sig):
k=gamma*np.exp(-n*np.power(U/(m*p),alpha));
g=1-np.exp(-np.power(t,n)*k);
f=np.exp(-np.power(U - mu, 2.) / (2 * np.power(sig, 2.)));
return A*g*f
A=10;
n=2;
alpha=5
mu=2;
sig=0.4;
gamma=11.11e12
time = np.logspace(-8, -4, 100)
p=2.5;
m=1;
Ylist_P2_5 = []
for t in time:
Y = quad(integrand_1, 0, np.inf, args=(A,t,p,gamma,m,n,alpha,mu,sig))
Ylist_P2_5.append(Y[0])
fig, ax = plt.subplots()
ax.semilogx(time, Ylist_P2_5, 'k-*', label='x=2.5')
legend = ax.legend(loc='best', shadow=True, fontsize='x-large')
plt.xlabel('log(t)', fontdict=None, labelpad=None)
plt.ylabel('y', fontdict=None, labelpad=None)
plt.show()