小编use*_*226的帖子

多项式卷积返回意外值

我正在使用 R 3.6.2(平台 = x86_64-w64-mingw32)

在以下两个多项式系数向量的卷积中,我期望第一个条目恰好为 1.0,但函数convolve不同:

g <- c(1, -49, 1155, -17441, 189700, -1583071, 10545901, -57608692, 
263063351, -1018546561, 3380085631, -9693547553, 24176423345, 
-52691112850)
u <- c(1, -6, 11, -6)
convolve(g, rev(u), type = 'o')
# output
 [1]  1.000172e+00 -5.500020e+01  1.460000e+03 -2.491600e+04
 [5]  3.073450e+05 -2.920052e+06  2.223567e+07 -1.394361e+08
 [9]  7.342188e+08 -3.293898e+09  1.273071e+10 -4.275645e+10
[13]  1.256299e+11 -3.246592e+11  6.402486e+11 -7.246608e+11
[17]  3.161467e+11
Run Code Online (Sandbox Code Playgroud)

请注意,结果中的第一个条目是 1.000172,而不是 1.0。

在 Python 3.7.4 中执行相同的卷积可得到预期的答案:

import numpy as np
g = [1, -49, 1155, -17441, 189700, -1583071, 10545901, …
Run Code Online (Sandbox Code Playgroud)

floating-point r fft rounding convolution

5
推荐指数
1
解决办法
196
查看次数

标签 统计

convolution ×1

fft ×1

floating-point ×1

r ×1

rounding ×1