如何在python中执行此集成:当y(t)= integrate [f(t,y)]

时间:2019-04-02 13:49:29

标签: python integration

我要进行以下积分。问题是,积分“ y”的结果取决于“ y”本身的值。因此,在右侧和左侧之间应该有一个反馈回路。 y的初始值为零。

[这里f(U)是U的高斯函数,平均值和标准偏差分别为mu和sigma。]

当LHS和RHS之间没有耦合时,我可以执行集成的简化版本。即,如果我在右侧用常数替换“ mt-y”项(请参阅我的代码,这当然不能解决实际问题)。

但是我不明白如何使用现有的耦合器进行实际的耦合。

enter image description here

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()

0 个答案:

没有答案