|
本帖最后由 〇〇 于 2025-5-10 21:44 编辑
新版的numpy有多项式乘方的函数,直接用,注意x次数是从右向左的看的,不管算扔300次还是3000次都很快
- from numpy.polynomial import polynomial as P
- d=[1/12, 0,1/12,1/12,1/4,1/4,0,1/4]
- >>> P.polypow(d, 2)
- array([0.00694444, 0. , 0.01388889, 0.01388889, 0.04861111,
- 0.05555556, 0.04861111, 0.125 , 0.10416667, 0.16666667,
- 0.10416667, 0.125 , 0.125 , 0. , 0.0625 ])
- >>> P.polypow(d, 3)
- array([0.0005787 , 0. , 0.00173611, 0.00173611, 0.00694444,
- 0.00868056, 0.01273148, 0.02777778, 0.03298611, 0.05787037,
- 0.05729167, 0.08854167, 0.10416667, 0.09895833, 0.125 ,
- 0.09375 , 0.109375 , 0.0625 , 0.046875 , 0.046875 ,
- 0. , 0.015625 ])
- >>> import time
- >>> t=time.time();r=P.polypow(d, 300);print(len(r),time.time()-t)
- 2** 0.001355886459350586
- >>> t=time.time();r=P.polypow(d, 3000);print(len(r),time.time()-t)
- 21001 0.038218021392822266
复制代码
|
|