问题描述
我正在尝试在 python 上编写 Bernstein 多项式,但是我在使用 poly1d 函数时遇到了问题。在 Bernstein 函数中,变量是 t,但在 poly1d 函数中,默认变量是 x。在以下代码中,我将变量称为 t:
1: print((nCr(2,0)*((np.poly1d([1,0],variable="t"))**0)*((np.poly1d([-1,1],variable="t"))**(2-0))))
2: print(np.poly1d([-1,variable="t"))
但我得到了这样的输出:
1: 1 x^2 - 2 x + 1
2: -1 t + 1
我如何解决第一个问题?
解决方法
np.poly1d()
提供一个 variable
参数仅用于打印目的。它实际上并没有在操作中使用它。
例如:
>>> vars(np.poly1d([1,2],variable='t'))
{'coeffs': array([1,2]),'_variable': 't'}
# but:
>>> vars(1 * np.poly1d([1,'_variable': 'x'}
因此,我建议在最后一步添加 variable
位:
pol = np.poly1d((nCr(2,0) * ((np.poly1d([1,0]))**0)*((np.poly1d([-1,1]))**(2-0))),variable='t')
print(pol)
# out:
2
1 t - 2 t + 1