sage自用手册

可以用来计算极小多项式,前面填多项式后面填幂次pari.algdep('', )

sage自带的快速计算两多项式的最大公约式的方法._pari_with_name('x')

sage自带的将n分解成形如平方和恢复两个规模相近的数two_squares()

首一多项式.monic()

升序返回所有系数.coefficients()

Gröbner基(求最大公约数)

1
2
3
4
5
6
7
8
9
10
N = 17
R = PolynomialRing(Zmod(N), 'x, y')
x,y = R.gen()

f=x^2 - 2*x +y
g=y + x -2

I = Ideal([f,g])
print(I.groebner_basis())
#[y^2 + 16*y, x + y + 15]

求解离散对数问题 求解以base 为底, a 的对数; ordbase 的阶,operation 可以是 + 与 * , 默认为 * ; bounds 是一个区间 (low,up) ,需要保证所计算的对数在此区间内

1
2
3
4
5
6
7
discrete_log(a,base,ord,operation)#通用求解离散对数

discrete_log_rho(a,base,ord,operation)#求离散对数的Pollard-Rho算法。

discrete_log_lambda(a,base,bounds,operation)#求离散对数的Pollard-kangaroo算法

bsgs(base,a,bounds,operation)#小步大步法。

矩阵运算

  • 转置:M.transpose()
  • 求逆矩阵:M.inverse()
  • 特征值:M.eigenvalues()
  • 特征向量:M.eigenvectors_right()
  • 行列式求解:M.det()
  • 求秩:M.rank()

求解线性方程组

  • X=A.solve_right()求解方程A ⋅ X = B
  • X=A.right_right()求解方程X ⋅ A = B
  • X = A.left_kernel()求解左核空间X ⋅ A = 0
  • X = A.right_kernel()求解右核空间A ⋅ X = 0

Reference SageMath简明教程 | tl2cents blog SageMath小白自用向导 - SeanDictionary | 折腾日记