1. [Magma] 运行 Magma 自带的例子
Posted by haifeng on 2011-08-14 15:19:46 last update 2011-08-14 15:19:46 | Answers (0) | 收藏
Posted by haifeng on 2011-08-14 15:19:46 last update 2011-08-14 15:19:46 | Answers (0) | 收藏
Posted by haifeng on 2011-08-14 15:13:47 last update 2011-08-14 15:13:47 | Answers (0) | 收藏
如果安装 Magma 时采用默认安装, 则如下
C:\PROGRAM FILES\MAGMA ├─help ├─htmlhelp │ └─rel ├─libs │ ├─data │ │ ├─ecpp │ │ │ └─Data │ │ │ └─Weber │ │ ├─Galois │ │ ├─ModEq │ │ │ ├─Atkin │ │ │ └─Canonical │ │ ├─Prm1000 │ │ └─TrnGps │ ├─examples │ ├─galpols │ ├─intro │ ├─isolgps │ ├─matgps │ ├─pergps │ ├─prof │ ├─simgps │ ├─solgps │ └─test │ ├─FCCS │ ├─lib │ └─other ├─package │ ├─Aggregate │ │ ├─Cop │ │ ├─SeqEnum │ │ ├─SetIndx │ │ ├─SetMulti │ │ └─Tup │ ├─Algebra │ │ ├─AlgAss │ │ ├─AlgFP │ │ ├─AlgLie │ │ └─AlgQuat │ ├─Code │ │ ├─CodeFld │ │ └─CodeRng │ ├─Commut │ │ ├─RngMPol │ │ └─RngMPolRes │ ├─Crypt │ ├─Geometry │ │ ├─Algaem │ │ ├─Arith │ │ ├─Clstr │ │ ├─Crv │ │ ├─CrvAnJac │ │ ├─CrvCon │ │ ├─CrvEll │ │ │ ├─FourDesc │ │ │ └─SEA │ │ ├─CrvG2 │ │ ├─CrvHyp │ │ │ └─Canonlift_char2 │ │ ├─CrvMod │ │ ├─CrvRat │ │ ├─GrdRng │ │ │ ├─Baskets │ │ │ ├─CalabiYau │ │ │ ├─DatabaseFano │ │ │ ├─DatabaseK3 │ │ │ ├─Fano │ │ │ ├─Generic │ │ │ ├─HilbertSeries │ │ │ ├─K3 │ │ │ └─SubKCurve │ │ ├─GrphRes │ │ │ ├─DualGraph │ │ │ └─Resolution │ │ ├─GrpPSL2 │ │ │ ├─Graphics │ │ │ ├─GrpPSL2 │ │ │ ├─SpcHyp │ │ │ └─SymFry │ │ ├─LinearSys │ │ ├─MapSch │ │ ├─ModAbVar │ │ ├─ModBrdt │ │ ├─ModFrm │ │ ├─ModSS │ │ ├─ModSym │ │ ├─NwtnPgon │ │ └─Sch │ ├─Group │ │ ├─Grp │ │ ├─GrpAb │ │ ├─GrpAtlas │ │ ├─GrpBB │ │ ├─GrpBrd │ │ ├─GrpCoh │ │ ├─GrpData │ │ │ ├─p6 │ │ │ └─perfgps │ │ ├─GrpExt │ │ ├─GrpFin │ │ │ ├─Lix │ │ │ └─SimpleRecog │ │ ├─GrpFP │ │ │ └─SQ │ │ ├─GrpMat │ │ │ ├─ClassicalRec │ │ │ ├─FIURG │ │ │ ├─GLConjugate │ │ │ ├─isolgps │ │ │ ├─lie │ │ │ ├─Misc │ │ │ ├─SmallerField │ │ │ ├─Smash │ │ │ ├─Tensor │ │ │ └─TensorInduced │ │ ├─GrpPC │ │ │ ├─central │ │ │ ├─count-pgrps │ │ │ └─pgrps │ │ └─GrpPerm │ │ ├─aut │ │ └─max │ ├─HomAlg │ │ └─AlgBas │ ├─Incidence │ │ ├─AlgSym │ │ ├─Designs │ │ ├─Graph │ │ ├─Plane │ │ └─Tableau │ ├─Lattice │ │ ├─Lat │ │ └─QuadBin │ ├─LieThry │ ├─Module │ │ ├─ModRng │ │ ├─Mtrx │ │ └─MtrxSprs │ ├─Opt │ │ └─LinProg │ ├─RepThry │ │ ├─AlgChtr │ │ ├─GrpPC │ │ ├─ModGrp │ │ └─RngInvar │ ├─Ring │ │ ├─FldAb │ │ ├─FldCyc │ │ ├─FldFin │ │ ├─FldFun │ │ │ └─FldAb │ │ ├─FldNum │ │ ├─FldQuad │ │ ├─FldRat │ │ ├─FldRe │ │ ├─RingExt │ │ ├─Rng │ │ ├─RngDiff │ │ ├─RngInt │ │ ├─RngLoc │ │ ├─RngMPol │ │ └─RngUPol │ ├─Semigroup │ └─System │ └─Prof └─pdf
Posted by haifeng on 2011-08-13 17:01:34 last update 2011-08-13 17:02:52 | Answers (0) | 收藏
符号 | 含义 | Category |
---|---|---|
$\mathbb{Q}$ | 有理数域 | FldRat |
$\mathbb{F}_q$ | 有限域 | FldFin |
$F(x_1,\ldots,x_m)$ | 有理函数域 | FldFun |
$F((x))$ | Field of Laurent series | RngSerLaur |
$\mathbb{Q}(\sqrt{D})$ | quadratic number field | FldQuad |
$\mathbb{Q}(\zeta_n)$ | cyclotomic number field | FldCyc |
$\mathbb{Q}(\alpha)$ | number field | FldNum |
$\mathbb{Q}_p$ | $p$-adic field | FldPad |
$\mathbb{Q}_p(\alpha)$ | local field | FldLoc |
$\mathbb{R}$ | 实数域 | FldPr, FldRe |
$\mathbb{C}$ | 复数域 | FldPr, FldCom |
Posted by haifeng on 2011-08-13 16:47:07 last update 2011-08-13 16:52:03 | Answers (0) | 收藏
符号 | 含义 | Category |
---|---|---|
$\mathbb{Z}$ | 整数环 | RngInt |
$\mathbb{Z}/m\mathbb{Z}$ | ring of residue classes | RngIntRes |
$R[x]$ | 一元多项式环 | RngUPol |
$F[x]/f(x)$ | 多项式因子环 | RngUPolRes |
$R[x_1,\ldots,x_m]$ | 多元多项式环 | RngMPol |
$R[x_1,\ldots,x_m]^G$ | 不变环 | RngInvar |
$R[[x]]$ | 幂级数环 | RngSer |
$O$ | order in a number field | RngOrd |
$\mathbb{Z}_p$ | $p$-adic 环 | RngPad |
$R_m$ | 局部环 | RngLoc |
$V$ | valuation ring | RngVal |
Posted by haifeng on 2011-08-13 16:09:09 last update 2011-08-13 16:34:11 | Answers (0) | 收藏
属性的使用在 packages 中是十分普遍的.
系统预定义属性的值在 Magma 启动时就自动赋予了. 可以使用 AssertAttribute 或 HasAttribute 来改变系统预定义属性的值. (为了保持向后兼容, HasAttribute 在某些时候还是可以使用的.)
对于任何可以作为 AssertAttribute 或 HasAttribute 的第一个有效参数的名字, 这个名字也是某个适当的类别结构的有效属性字段. 因此我们现在使用反引号(back quote `)方法来获取属性的值, 而不再使用旧的方法. 如
> S`Name := x;
完全等同于
> AssertAttribute(S, \"Name\", x);
函数 AssertAttribute 和 HasAttribute 的第二个参数都是字符串, 因此必须用双引号括起来.
类似的, 下面的代码
> if assigned S`Name then > x := S`Name; > // do something with x... > end if;
等价于
> l, x := HasAttribute(S, \"Name\"); > if l then > // do something with x... > end if;
注意: 当系统属性没有被设定时, 使用反引号 ` 引用它并不会触发计算其值(但相应的内在函数会计算, 如果存在的话), 反而会出现错误. 因此我们常用 assigned 来测试属性是否确实被设定了.
Posted by haifeng on 2011-08-13 15:51:41 last update 2011-08-13 15:52:22 | Answers (0) | 收藏
Magma 中的 List 是有限个对象的一个有序排列. 它不同于序列(sequence)必须属于某个共同的结构. List 的存储并不是紧凑的, 对于List, 所提供的运算也并不广泛. 只是用于为用户临时把各种对象放在一起而已.
[**]//空的 List [* e1,e2,...,en *]// ei 可以是表达式
Posted by haifeng on 2011-08-13 15:33:42 last update 2011-08-13 15:33:42 | Answers (1) | 收藏
Posted by haifeng on 2011-08-13 15:25:52 last update 2011-08-13 15:25:52 | Answers (3) | 收藏
Posted by haifeng on 2011-08-13 14:50:55 last update 2021-03-14 18:49:59 | Answers (0) | 收藏
f := function(x1,...,xn: parameters) statements end function;
function f(x1,...,xn: parameters) statements end function;
函数体中至少有一句应是 return 语句, 可以返回多个值, 形如
return expression,...,expression;
当在 if ... then ... else 结构中, 如果要返回无定义的值, 则可使用下划线 _ , 这可以使得函数体的所有分支的返回值数目都是一样的.
参数的给定必须是逗号分隔的列表形式, 形如:
identifier1 := value, identifier2 := value, identifier3 := value
这两种定义方式的唯一区别在于递归调用时, 第一种形式的函数 f 不能在其定义体中调用 f 自己, 必须使用 $$ 来指代 f 自身. 而第二种形式的函数可以在定义体中调用函数自身.
例子: 生成 Fibonacci 数列
f := function(x1,...,xn,... : parameters) statements end function;
function f(x1,...,xn,... : parameters) statements end function;
这种函数在调用时可以传递多于 n 个参数. 形如: $f(y_1,...,y_m)$, $m\geqslant n$.
当函数体非常简单, 可以用一个表达式来定义时可以使用下面的简写方式来定义.
f := func < x1,...,xn : parameters | expression >;
f := func < x1,...,xn, ... : parameters | expression >;
Posted by haifeng on 2011-08-10 16:44:13 last update 2011-08-13 10:18:58 | Answers (0) | 收藏
// prints all amicable numbers up to 100000 d:=func < m | DivisorSigma(1,m)-m >; for m:=2 to 100000 do n:=d(m); if m ge n and d(n) eq m then print m, n; end if; end for;
这里函数 DivisorSigma(i,n) 的功能是:
\[ \sigma_i(n)=\sum_{d|n}d^i \]