我将麦斯特的总和定义为:
S(E, N) = {
my (s = 0.0);
forprime(p = 2, N,
my (a = ellap(E, p));
s += (2-a) / (p+1-a)
);
return (s);
}
和定义的多项式A(t)
和B(t)
我希望计算曲线的上述总和:y^2 = x^3 + A(t)x^2 + B(t)x
对于某些-700 < t < 700
,然后将其打印出来。所以我写道:
for(t = -700, 700, {
E = ellinit([0, A(t), 0, B(t), 0]);
if(E == [], , print(t, ": ", S(E, 50000)))
})
有效。现在我想对多项式A(t, t')
和B(t, t')
执行相同的操作,其中两个变量-n < t
,t' < n
用于某个任意整数n
,然后仅打印曲线使用S(E, 50000) > 5
(t
和t'
是独立的)。可以告诉我正确的代码吗?
感谢。
答案 0 :(得分:2)
如果我正确理解了问题,以下PARI / GP代码应该适合您:
n = 100
forvec(P = [[-n, 0], [0, n]], {
E = ellinit([0, A(P[1], P[2]), 0, B(P[1], P[2]), 0]);
if (E == [], next());
my (v = S(E, 50000));
if (v > 5, print(P, ": ", v))
})
请注意,变量P
表示变量t
和t'
的间隔。我将t
上限为0,下限将t'
限制为0。