如何求解表达式关于D的导数?

问题描述 投票:0回答:1

积分为 enter image description here

其中变量遵循以下分布:

enter image description here

因此,积分变为:
enter image description here

现在,我在python中的代码是将表达式与

\(W_{1:3}\)
分别为
\(1,2,3\)
\(r_1 = 0\)
\(v\)
进行积分,即方差为
\(1\)
,时间常数
\(tau\)
\(1\)
,我想估计导数的根以找到
\(D\)
如下:

import sympy as sp
import math

w_n = [0,1,2]
r_1 = sp.Symbol("r_1")
r_2 = sp.Symbol("r_2")
r_3 = sp.Symbol("r_3")
r_n = [0, r_2,r_3]
D = sp.Symbol("D")
v = sp.Symbol("v")
t = sp.Symbol("t")

def expo_power(i=0,t=t,D=D,v=v):
    return ((((w_n[i] - r_n[i]) ** 2)/(2 * v)) + (((r_n[i] - r_n[i-1]) ** 2)/(4 * D * t)))

def expo_power_sum(lower_bound = 2, upper_bound=3,t=t,D=D,v=v):
    f = 0
    for i in range(lower_bound,upper_bound):
        f += expo_power(i-1,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/(8 * (sp.pi ** 2) * D * t * v)) \
        * sp.exp(-expo_power_sum(lower_bound=2,upper_bound=3,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 = P_w_n_P_r_n(i=lower,v=v,D=D,t=t)
    sp.pprint(f) 
    f = f * P_w_i_r_i(v=v)
    f = f * 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)
    integral_1 = sp.integrate(function, (r_1, lower_bound, upper_bound)).evalf()
    sp.pprint(integral_1)
    integral_2 = sp.integrate(integral_1, (r_3, lower_bound, upper_bound)).evalf()
    sp.pprint(integral_2)
    integral_3 = sp.integrate(integral_2, (r_2, lower_bound, upper_bound)).evalf()
    num = sp.N(integral_3)
    print(num)
    #sp.pprint(integral_3)
    deriv = sp.diff(num, D)
    sol = sp.solve(deriv, D)
    sp.pprint(sol)
integrate(v=1,t=1,lower_bound=-1000,upper_bound=1000)

现在,显示的解是两个未计算积分之间的比率。

请注意 enter image description here python 代码中的

t
是 (tau),我们在边缘化 (r_1,r_2,r_3) 后找到关于 (D) 的导数的根,积分没有被计算,特别是对于 ( r_2)

积分有闭形式吗?如果是的话,可以求解 $D$ 形式的导数吗?如果不是,有什么替代方案可以产生 $P'(w_{1:3}|D,v) = 0$ 相对于 $D$ 的解决方案?

python math sympy numerical-methods symbolic-math
1个回答
0
投票

我无法完全说出发生了什么,但问题的表述方式似乎有些问题,我认为你需要在寻求解决方案之前理顺问题陈述。

如果我没记错的话,所有涉及的分布都是正态分布,并且您对其中一些分布进行了边缘化(积分)。如果是这样,结果应该再次是正态分布(如果仍然存在一些自由变量)或涉及均值和方差的某个常数。我的猜测是,如果您将联合分布表述为具有合适协方差矩阵的多元正态分布,您将能够根据协方差运算来陈述结果。

但即使没有这个,如果问题设置正确,也应该可以得到 D、v 和 t 的精确结果。

我看到的第一个问题是被积数(函数中的

function
integrate
)只是
r_2
的函数。它也应该是
r_1
r_3
的函数,不是吗?

不应该将

r_n
分配给
[r_1, r_2, r_3]
而不是
[0, r_2, r_3]
吗?

function
不含
r_3
表明
expo_power_sum
无法正常工作。

最后,我的建议是在表述积分时使用符号无穷大(正/负

sp.oo
)而不是正/负 1000——替换任何有限值可能会使结果比需要的更复杂。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.