一、命令行
sage -h: 查看常用参数
sage -advanced: 列出所有可用参数
sage -n: 直接启动notebook模式
sage -R: 运行R
sage -optional: 列出可安装的所有可选包
sage -standard: 列出可安装的所有标准包
sage -i [包]: 安装所需的包,如果未给出包名称,则列出已安装包
sage -upgrade: 升级
sage: 启动sage
二、notebook
由若干个格子组成,一个格子是一个输入输出块。
1、启动
sage -n 或者启动sage后输入notebook()。
2、执行计算
多条命令输入,按enter分割。
输入完毕,按shift+enter开始计算。
3、tab补全
4、插入新格子(两种方法)
4.1 alt+enter
4.2 将鼠标移到一个格子的上边界或下边界,会出现一道粗线,点击即可
5、合并和切割格子
5.1 ctrl+enter将当前格子分为两个并分别计算
5.2 ctrl+backspace将当前格子与上一个合并
6、删除格子:backspace
7、隐藏输出结果
在结果左侧点击切换显示方式
三、符号计算
先使用var定义变量,如var('a,b,c')。
一个方程(关系表达式)可以赋值给一个变量,即用一个变量表示一个方程(关系表达式)。
如equ= y >= x^2
可以对equ进行加减乘除等运算,每一个运算都同时对关系表达式两侧进行。
注意一个关系表达式在运算前为真,有可能在运算后为假。
可以对两个关系表达式进行加减乘除,但要注意两个关系表达式的符号要相同。如:
equ1= x^2+2*x+1 >= 3*x^2+x+5
equ2= x+6 >= 6*x^2+9*x
两个关系表达式都为>=
除关系表达式外,任意sage数据类型都可以参与符号运算。如:
e1= (a+b+c)^2
expand(e1)
M = matrix(2,2,[x,y,z,x])
v = vector([x,y])
M * v
正负无穷的表示:+oo、-oo、+infinity、-infinity、unsigned_infinity
四、符号表达式函数:
n:计算近似值
Order:阶,即表达式的最高阶
factorial:阶乘
arccos:反余弦;arccosh:反双曲余弦
arcsin、arcsinh、arctan、arctanh
sin、sinh、cos、cosh、tan、tanh
arctan2:两参数的反正切,如x.arctan2(y)、arctan2(1,2)
args、arguments:返回表达式中的参数(字母排序)
function:指明表达式中哪个字母是参数,如
f=x+y
f.args()
g=f.function(x)
g.args()
variables:返回表达式的变量(字母排序)。注:和args的区别不明。
defaule_variables:返回第一个变量,即variables()产生的结果列表中的第一个。
如果表达式中没有变量,则返回x。
assume:假设,如assume(x>2),即假设x>2,注意前后上下文的假设不能冲突
forget:取消之前的假设,在假设使用完毕后使用,否则可能会对后续计算产生影响,如:
assume(x>2)
assume(x>3)
forget()
bool:返回表达式的布尔值,如bool(x>3)
binomial:返回二项式系数,参数为数字返回计算结果,参数为字母返回表达式。见binomial?
注意:x.binomial(3)和binomial(x,3)的返回形式是不一样的(虽然结果一样)。
coeff(s,n):返回表达式中s的n次方那一项的系数,n默认为1。
coeffs:返回方程中某一变量不同次方的系数,以列表形式给出结果。如:
f=2*x^2 + 3*x + 1
f.coeffs()
注:coeff和coeffs也可写为coefficient和coefficients。
collect:根据所给参数合并同类项,如:
f = 100 + a*x + x^3*sin(x*y) + x*y + x/y + 2*sin(x*y)/x
f.collect(x)
f.collect(sin(x*y))
collect_common_factors():合并同类项时约去分子分母中的公因子。如:
(x/(x^2 + x)).collect_common_factors()
combine:将分母相同的项进行合并(不进行通分)
conjugate:返回共轭复数
contradicts:若所给表达式与已知表达式矛盾,返回true。如:
(x<3).contradicts(x==0) #返回false
(x<y).contradicts(x==30) #返回false
(x<y).contradicts({x: 30, y: 20}) #返回true
convert:单位转换,使用unit包,如:
units.length.foot.convert()
units.mass.kilogram.convert(units.mass.pound)
csgn:返回参数的符号。正数返回1,负数返回-1,0返回0,未知数x返回csgn(x)。
如:SR(-2).csgn() #不能使用csgn(-2)。
在某些情况下数字参与符号计算需使用SR限定在符号域(Symbolic Ring)。
normalize:将表达式通分,变为分数形式。
denominator:返回表达式的分母部分,默认normalize=true。
numerator:返回表达式的分子部分,默认normalize=true。
numerator_denominator:分别返回表达式的分子和分母部分,默认normalize=true。
对于非分数形式的表达式,若使用参数normalize=false,则分子返回整个表达式,分母返回1。
diff:返回表达式的导数。diff也可写为differentiate和derivative。
diff的参数可以使用多个变量。如:
t = (x^2+y)^2
t.differentiate(x,2,y,y)
exp_simplify:对包含对数、指数和开方的表达式进行简化。
也可写为radical_simplify、simplify_radical、simplify_exp。
注:若简化结果为0,则返回0。(使用的算法是Maxima radcan())
expand:展开式。expand_rational功能相同。
expand_log:当表达式中的对数部分包含乘方、乘积和比值时,对表达式的对数部分进行展开。
expand_trig(full=False, half_angles=False, plus=True, times=True):
对三角函数和双曲函数中的角度之和与角度之积进行展开。
注:trig_expand和expand_trig功能相同。
factorial_simplify:将包含阶乘的表达式进行展开计算
注:simplify_factorial
factor:因式分解。
factor_list:返回因式分解后的因子列表。如:4
f = expand((2*u*v^2-v^2-4*u^3)^2 * (-u)^3 * (x-sin(x))^3)
f.factor()
f.factor_list()
find:返回所有符合模式的表达式,当一个子表达式符合模式时,不查找子表达式的子表达式。
注:使用SR.wild定义通配符,见SR.wild?
find_maximum_on_interval:返回表达式在区间[a,b]上的最大值及对应的自变量值。
find_minimum_on_interval:返回表达式在区间[a,b]上的最小值及对应的自变量值。
待续