在sagemath中,(版本4.7)我在笔记本中这样做:
var("x y")
dens(x,y) = 2 if y <= x else 0
这没有错误。但是,在输入时
dens(1,1) returns 0
dens(1,0.5) returns 0 !
等等。事实上,我发现无法得到答案2。
我做错了什么?
答案 0 :(得分:3)
你正在使用Sage函数声明语法 - f(x,y)= something-or-other - 但是在右边你不是一个Sage表达式而是一个Python表达式。这是在声明它时进行评估。我的意思是:
sage: var("x y")
(x, y)
sage: bool(y <= x)
False
sage: dens = 2 if y <= x else 0
sage: dens
0
sage: dens(x,y) = 2 if y <= x else 0
sage: dens
(x, y) |--> 0
如果你只关心函数所采用的值(比如说你正在绘制它),你可以简单地使用Python函数。如果你想要区分它等等,那么你就更难了,我很害怕。