PARI/GP中matsolve方法疑似存在BUG的技术问询
PARI/GP matsolve方法异常问题
尺寸不匹配触发段错误
向matsolve(M, B)方法传入尺寸不符合要求的矩阵时,未收到任何参数合法性预警,反而直接触发段错误,报错信息如下:
*** matsolve: bug in PARI/GP (Segmentation Fault), please report.
尺寸匹配时返回结果错误
当传入尺寸正确的矩阵时,得到的返回结果不符合预期,测试代码如下:
{ w = ffgen(w^7 + w^2 + Mod(2,3)*w + Mod(1,3)); info = [ 2*w^6 + 2*w^5 + 2*w^4 + 2*w^3 + 2*w^2 + w, w^6 + w^5 + w^4 + 2*w^2 + 2; w^4 + w^3 + 2*w^2 + w + 1, w^6 + 2*w^5 + 2*w^4 + w^3 + 2*w^2; 2*w^6 + w^5 + w^4 + w^3 + 2, 2*w^5 + 2*w^4 + 2*w^3 + 2*w + 2; w^5 + w^3 + 2*w^2 + w, w^6 + 2*w^5 + 2*w^4 + 2*w^3 + w^2 + 1; w^3 + w^2 + 2*w + 1, 2*w^6 + w^5 + 2*w^3 + w; 2*w^6 + 2*w^5 + w^4 + 2*w^3 + 2*w + 2, w^6 + 2*w^4 + 2*w^2 + 1; w^6 + 2*w^5 + 2*w^4 + 2*w^3 + 2*w^2 + 2*w + 1, w^6 + 2*w^4 + 2*w^3 + w^2 + w + 1 ]; result = [ w^6 + 2*w^5 + w^3 + 2*w; 2*w^6 + w^2 + w; w^4 + 2*w^2 + 2*w + 2; 2*w^6 + 2*w^5 + w^4 + w^3 + 2*w^2; 2*w^5 + w^4 + w; w^5 + 2*w^2 + w + 2; 2*w^6 + w^5 + 2*w^4 + 2*w^3 + 2*w^2 + w ]; \\ lamda * info = result lamda = matsolve(info, result); calculated_result = mattranspose(mattranspose(lamda) * mattranspose(info)); }
代码执行输出如下:
? result [ w^6 + 2*w^5 + w^3 + 2*w] [ 2*w^6 + w^2 + w] [ w^4 + 2*w^2 + 2*w + 2] [ 2*w^6 + 2*w^5 + w^4 + w^3 + 2*w^2] [ 2*w^5 + w^4 + w] [ w^5 + 2*w^2 + w + 2] [2*w^6 + w^5 + 2*w^4 + 2*w^3 + 2*w^2 + w] ? calculated_result [ w^6 + 2*w^5 + w^3 + 2*w] [ 2*w^6 + w^2 + w] [ 2*w^5 + w^4 + w^3 + w^2 + 2*w + 2] [w^6 + w^5 + 2*w^4 + 2*w^3 + 2*w^2 + w] [ w^6 + w^4 + w^3 + w^2 + 2*w + 1] [ 2*w^4 + 2*w^3 + w^2 + 2*w + 1] [ 2*w^4 + w^3 + w + 1]
对比两个输出可见,result和calculated_result仅前两行一致,剩余行全部不匹配。猜测当传入n×k的info矩阵和k×1的result矩阵时,GP会忽略info矩阵最后(n-k)行的数据,导致计算结果出错。
内容的提问来源于stack exchange,提问作者karakale
相关产品推荐
相关产品推荐

