我写了一个代码,用伯恩斯坦多项式(https://en.wikipedia.org/wiki/Bernstein_polynomial)逼近函数。
于
https://github.com/pdenapo/metodos-numericos/blob/master/python/bernstein.py
我有一个函数,它给出的多项式近似f为伯恩斯坦(f,n,p)(其中f是我想近似的函数,n是阶数,p是它被求值的点。
def bernstein(f, n, p):
return np.sum(
[f(k / n) * st.binom.pmf(k, n, p) for k in np.arange(0, n + 1)])
现在我想画出这个函数的曲线,其中f和n是固定的,p通过由np生成的向量。
bernstein3 = lambda x: bernstein(f, 3, x)
bernstein3 = np.vectorize(bernstein3)
y3 = bernstein3(x)
plt.plot(x, y3, 'green', label='$B_3$')
这是可行的。但我想一定有一些更优雅的,或者可能是更Python的方式来做这件事。有什么建议吗?非常感谢
1条答案
按热度按时间js81xvg61#
由于SciPy统计函数是矢量化的,因此可以直接修改
bernstein
函数,使其以矢量化的方式工作:它将被简单地用作: