Как выполнить это интегрирование в python: когда y (t) = integrate [f (t, y)] - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть следующий интеграл.Проблема в том, что результат интегрирования 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...