【问题标题】:Simple way to request a factorization over the Gaussians请求高斯分解的简单方法
【发布时间】:2020-08-05 11:53:10
【问题描述】:

我在高斯整数上工作,并成功地对它们使用factor。但是,有时虚部会消失,但我仍然想要对高斯整数进行因式分解。

例如,程序for(j=-3, 3, print(j,": ",factor(17+j*I)))写道:

-3: [-I, 1; 1 + I, 1; 10 + 7*I, 1]
-2: [-I, 1; 2 + 17*I, 1]
-1: [-1, 1; 1 + I, 1; 1 + 2*I, 1; 2 + 5*I, 1]
0: Mat([17, 1])
1: [-I, 1; 1 + I, 1; 2 + I, 1; 5 + 2*I, 1]
2: Mat([17 + 2*I, 1])
3: [-I, 1; 1 + I, 1; 7 + 10*I, 1]

我希望输出中的中间行不同:

-3: [-I, 1; 1 + I, 1; 10 + 7*I, 1]
-2: [-I, 1; 2 + 17*I, 1]
-1: [-1, 1; 1 + I, 1; 1 + 2*I, 1; 2 + 5*I, 1]
0: [-I, 1; 4 + I, 1; 1 + 4*I, 1]
1: [-I, 1; 1 + I, 1; 2 + I, 1; 5 + 2*I, 1]
2: Mat([17 + 2*I, 1])
3: [-I, 1; 1 + I, 1; 7 + 10*I, 1]

是否有一些设置可以做到这一点?还是我必须编写自己的“包装器”来专门处理这种情况?

【问题讨论】:

    标签: complex-numbers factorization pari pari-gp


    【解决方案1】:

    函数factor(x, {D}) 接收一个可选参数D,指示分解域。所以只需在调用factor(x, I) 中指定目标域:

    > for(j=-3, 3, print(j,": ",factor(17+j*I, I)))
    -3: [-I, 1; 1 + I, 1; 10 + 7*I, 1]
    -2: [-I, 1; 2 + 17*I, 1]
    -1: [-1, 1; 1 + I, 1; 1 + 2*I, 1; 2 + 5*I, 1]
    0: [-I, 1; 4 + I, 1; 1 + 4*I, 1]
    1: [-I, 1; 1 + I, 1; 2 + I, 1; 5 + 2*I, 1]
    2: Mat([17 + 2*I, 1])
    3: [-I, 1; 1 + I, 1; 7 + 10*I, 1]
    

    【讨论】:

    • 这是什么版本的 PARI/GP?
    • GP/PARI 版本 2.11.2。
    • 原来我的版本是 2.5 岁。我正在阅读的文档(??factor)当然也很旧。看起来此功能是 2 年前推出的 2.10 或 2.11 中的新功能。你的答案是正确的;我会接受的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多