【问题标题】:Solve equation with sum and index using Sympy使用 Sympy 求解具有总和和索引的方程
【发布时间】:2020-11-01 17:16:42
【问题描述】:

在尝试了很多事情之后,我认为在 SO 上提问会很好。我的问题很简单:如何使用 Sympy 求解以下方程?

Equation

我想为 lambda_0 解决这个问题,q 是一个大小为 J 的数组,其中包含 0 到 1 之间的元素,它们的总和为 1(离散概率分布)。我尝试了以下方法:

from sympy.solvers import solve
from sympy import symbols, summation

p = [0.2, 0.3, 0.3, 0.1, 0.1]
l = symbols('l')
j = symbols('j')
eq= summation(j*q[j]/(l-j), (j, 0, 4))

s= solve(eq, l)

但这给了我一个q[j] 的错误,因为j 在这里是一个Symbol 对象,而不是一个整数。如果我不将j 作为符号,我将无法评估eq 表达式。有谁知道怎么做?

编辑: p = 1-q 在上面,因此 q[j] 应该被 (1-p[j]) 替换。

【问题讨论】:

    标签: python sympy equation solver


    【解决方案1】:

    列表p需要先转换成符号数组才能被符号值j索引。

    from sympy.solvers import solve
    from sympy import symbols, summation, Array
    
    p = Array([0.2, 0.3, 0.3, 0.1, 0.1])
    l, j = symbols('l j')
    eq = summation(j * (1 - p[j]) / (l - j), (j, 0, 4))
    
    s = solve(eq - 1, l) # [1.13175762143963 + 9.29204634892077e-30*I, 2.23358705810004 - 1.36185313905566e-29*I, 3.4387382449005 + 3.71056356734273e-30*I, 11.5959170755598 + 6.15921474293073e-31*I]
    

    (假设您的p 代表1 - q

    【讨论】:

    • 这解决了我的问题!谢谢你帮助我。
    猜你喜欢
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多