Теперь мой код на Python предназначен для интеграции выражения с \(W_{1:3}\), равным \(1,2,3\) соответственно , \(r_1 = 0\), \(v\), то есть дисперсия равна \(1\), а постоянная времени \(tau\) равна \(1\), я хотите оценить корни производной, чтобы найти \(D\) следующим образом:
import sympy as sp
N = 3
w_n = [k for k in range(N)]
r_n = [sp.symbols(f'r_{i+1}') for i in range(N)]
D = sp.symbols("D",real=True,)
v = sp.symbols("v",real=True)
t = sp.symbols("t",real=True)
def expo_power(i=0,t=t,D=D,v=v):
f = ((((w_n[i] - r_n[i]) ** 2)/(2 * v)) + (((r_n[i] - r_n[i-1]) ** 2)/(4 * D * t)))
return f
def expo_power_sum(lower_bound = 2, upper_bound=N,t=t,D=D,v=v):
f = 0
for i in range(lower_bound, upper_bound):
f += expo_power(i,t=t,D=D,v=v)
return f
def P_w_n_P_r_n(i=0,v=v,D=D,t=t):
return (1/sp.sqrt(8 * (sp.pi ** 2) * D * t * v) ** (N - 1) ) \
* sp.exp(-expo_power_sum(lower_bound=2,upper_bound=N,t=t,D=D,v=v))
def P_w_i_r_i(i = 0, v=v):
return (1/(sp.sqrt(2 * sp.pi * v))) \
* sp.exp(-((w_n[i] - r_n[i]) ** 2/(2 * v)))
def normal_dist(x =0, m = r_n[0], v =v):
return (1/(sp.sqrt(2 * sp.pi * v))) \
* sp.exp(-(((x - m) ** 2)/(2 * v)))
def integrand(v = v,t=t,lower = 2):
f = sp.log(P_w_n_P_r_n(i=lower,v=v,D=D,t=t) * P_w_i_r_i(v=v) * normal_dist(x=r_n[0],v=v))
return f
def integrate(v=v,t=t, lower_bound = -sp.oo, upper_bound= sp.oo):
function = integrand(v=v,t=t)
for i in range(N):
inte = sp.Integral(function,(r_n[i],lower_bound,upper_bound))
inte = inte.doit()
inte = inte.evalf()
function = inte
k = inte
sp.pprint(k)
d = sp.diff(k,D)
sol = sp.solve(d,D)
sp.pprint(sol)
integrate(v=1,t=1,lower_bound=0,upper_bound=10)
Теперь отображаемое решение представляет собой отношение двух невычисленных интегралов.
обратите внимание, что
и t в коде Python равен (tau), и мы находим корни производной относительно до (D) после маргинализации (r_1,r_2,r_3) интеграл не вычисляется, в частности для (r_2)
Имеет ли интеграл замкнутый вид? если да, то можно ли решить производную формы для $D$? если нет, то какова альтернатива для получения решения для $P'(w_{1:3}|D,v) = 0$ относительно $D$?
EDIT: код отредактирован после исправления ошибок, на которые указал @RoberDodier
Где переменные имеют следующее распределение: [img]https://i.sstatic.net/9QZiS5dK.png[/img]
Таким образом, интеграл принимает вид:
[img]https://i.sstatic.net/MBH3lwep.png[/img]
Теперь мой код на Python предназначен для интеграции выражения с \(W_{1:3}\), равным \(1,2,3\) соответственно , \(r_1 = 0\), \(v\), то есть дисперсия равна \(1\), а постоянная времени \(tau\) равна \(1\), я хотите оценить корни производной, чтобы найти \(D\) следующим образом: [code]import sympy as sp
N = 3
w_n = [k for k in range(N)] r_n = [sp.symbols(f'r_{i+1}') for i in range(N)] D = sp.symbols("D",real=True,) v = sp.symbols("v",real=True) t = sp.symbols("t",real=True)
def expo_power(i=0,t=t,D=D,v=v): f = ((((w_n[i] - r_n[i]) ** 2)/(2 * v)) + (((r_n[i] - r_n[i-1]) ** 2)/(4 * D * t))) return f def expo_power_sum(lower_bound = 2, upper_bound=N,t=t,D=D,v=v): f = 0 for i in range(lower_bound, upper_bound): f += expo_power(i,t=t,D=D,v=v) return f
def normal_dist(x =0, m = r_n[0], v =v): return (1/(sp.sqrt(2 * sp.pi * v))) \ * sp.exp(-(((x - m) ** 2)/(2 * v)))
def integrand(v = v,t=t,lower = 2): f = sp.log(P_w_n_P_r_n(i=lower,v=v,D=D,t=t) * P_w_i_r_i(v=v) * normal_dist(x=r_n[0],v=v)) return f
def integrate(v=v,t=t, lower_bound = -sp.oo, upper_bound= sp.oo): function = integrand(v=v,t=t)
for i in range(N): inte = sp.Integral(function,(r_n[i],lower_bound,upper_bound)) inte = inte.doit() inte = inte.evalf() function = inte k = inte sp.pprint(k)
d = sp.diff(k,D) sol = sp.solve(d,D) sp.pprint(sol) integrate(v=1,t=1,lower_bound=0,upper_bound=10) [/code] Теперь отображаемое решение представляет собой отношение двух невычисленных интегралов. обратите внимание, что [img]https://i.sstatic.net/gwFU4R1I.png[/img] и t в коде Python равен (tau), и мы находим корни производной относительно до (D) после маргинализации (r_1,r_2,r_3) интеграл не вычисляется, в частности для (r_2) Имеет ли интеграл замкнутый вид? если да, то можно ли решить производную формы для $D$? если нет, то какова альтернатива для получения решения для $P'(w_{1:3}|D,v) = 0$ относительно $D$? EDIT: код отредактирован после исправления ошибок, на которые указал @RoberDodier