如何绘制二项式函数?

法哈德
def fac(n):
    value = 1
    for i in range(2,n+1):
        value = value * i
    return value

def C(n,k):
    return fac(n)/(fac(k) * (fac(n-k)))

for k in range(1,100):
    for n in [10,20,30]:
        F=C(n,k)
plt.plot(k,F)
plt.legend()
plt.show()

我想将二项式函数绘制k为某些n的函数n = 10, 20, 30, ...

但是,我不知道该如何绘制。

汉斯·赫斯

我怀疑,有一个特定的原因不使用NumPy,所以这是一个使用纯Python的解决方案。

如果您在谈论二项式分布,那么公式需要包含概率p我在下面的代码中添加了它。(如果您实际上只想拥有二项式系数,请删除两个pow项。)

通常,对于绘制,您需要将xy收集在某些数组中(例如XY),以便可以plt.plot(X, Y)绘制整个函数。

在您的示例中,您还需要切换两个循环,因为您想要具有三个函数,每个函数用于k = [1 ... 100]

那是我的解决方案:

from matplotlib import pyplot as plt

def fac(n):
    value = 1
    for i in range(2, n+1):
        value = value * i
    return value

def C(n, k, p):
    return fac(n)/(fac(k) * (fac(n-k))) * pow(p, k) * pow(1-p, n-k)

for N in [10, 20, 30]:
    X = []
    Y = []
    for K in range(1, 100):
        X.append(K)
        Y.append(C(N, K, 0.5))
    plt.plot(X, Y)
plt.legend(('N = 10', 'N = 20', 'N = 30'))
plt.show()

生成的输出如下所示:

输出量

希望有帮助!

----------------------------------------
System information
----------------------------------------
Platform:    Windows-10-10.0.16299-SP0
Python:      3.8.1
Matplotlib:  3.2.0rc1
----------------------------------------

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章