SymPy是一个符号计算的Python库,SymPy支持符号计算、高精度计算、模式匹配、绘图、解方程、微积分、组合数学、离散数学、几何学、概率与统计、物理学等方面的功能。下面我将基于它求解以下两个问题。

  1. 当有N个活跃节点的时候,分隙ALOHA的效率为 \(N p (1 - p)^{N - 1}\) ,找出使这个表达式最大化的p值。

  2. 采用 1 中的p值,计算当 N 趋近于无穷时分隙ALOHA的效率。

from sympy import *

首先导入sympy库,方便起见,导入了所有内容。

N = Symbol('N')
p = Symbol('p')

在SymPy中,数学符号是Symbol类的对象,要明确声明符号变量,我们新建了Np符号。

e = N*p*(1-p)**(N-1)

定义公式 \(N p (1 - p)^{N - 1}\)e

e1 = diff(e, p)

使用diff(func, var)函数计算函数ep的微分。

solve(e1, p)
[1/N]

使用solve(func, var)函数求解当e1=0时p的值,为 \(\frac{1}{N}\) 可知,使 \(N p (1 - p)^{N - 1}\) 最大化的p值为 \(\frac{1}{N}\)

e=e.subs(p, 1/N)

\(p = \frac{1}{N}\) 代入原表达式。

limit(e, N, oo)
exp(-1)

使用limit(function, variable, point)函数求解当N趋向无穷大时, 表达式e的极限,即为 \(\frac{1}{e}\) 所以,当 N 趋近于无穷时分隙ALOHA的效率为 \(\frac{1}{e}\)