Sagemath表达式不解决

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

我试图在 SageMath 中将这个方程作为一个函数来实现:

def prob_k(p_uv_list, tw):
    probs = []
    w, k = var('w, k')
    # compute probability of generating k entanglements, k=1..w
    for tk in range(tw):
        pk = binomial(w, k)*(p_uv_list[tk]**k)*(1-p_uv_list[tk])**(w-k).subs({x:tw,k:tk})
        probs += [pk]
    return probs

输入是一个概率列表和一个整数。我希望输出是给定 pk 公式计算的概率列表。我得到的是:

[0.500000000000000^k*0.500000000000000^w*binomial(w, k),
 0.500000000000000^k*0.500000000000000^(w - 1)*binomial(w, k),
 0.500000000000000^k*0.500000000000000^(w - 2)*binomial(w, k)]

为什么不用 w 和 k 代替 tw 和 tk ?

python list sage
1个回答
0
投票

不使用 subs,您可以使用括号和 replace 方法直接在表达式中简单地替换 tw 和 tk 的值

你可以试试这个代码:

def prob_k(p_uv_list, tw):
    probs = []
    w, k = var('w k')
    # compute probability of generating k entanglements, k=1..w
    for tk in range(tw):
        pk = binomial(w, k)*(p_uv_list[tk]**k)*(1-p_uv_list[tk])**(w-k)
        pk = pk.replace(w, tw).replace(k, tk)
        probs += [pk]
    return probs
© www.soinside.com 2019 - 2024. All rights reserved.