在SageMath中定义符号表达式的条件表达式
在SageMath(版本4.7)中,我在笔记本里这样做:
var("x y")
dens(x, y) = 2 if y <= x else 0
这样做没有报错。但是,之后:
dens(1, 1)
返回0
,dens(1, 0.5)
返回0
,- 还有其他类似的情况!
实际上,我找不到任何方法能得到答案 2
。
我到底哪里做错了呢?
2 个回答
0
piecewise
函数通常很有用:
你可以在这里查看相关信息:https://doc.sagemath.org/html/en/reference/functions/sage/functions/piecewise.html
另外,还有一个稍微不同的用法 from sympy import Piecewise
,它可以处理符号条件。
不过,我觉得 sympy(它是 sage 的一部分)应该有符号的“if”表达式,但我在网上搜索“sympy symbolic if”时找不到相关内容。
4
你正在使用Sage的函数声明语法,比如说 f(x,y) = 某个东西,但在等号右边你放的却是一个Python表达式,而不是Sage表达式。这段代码在声明的时候就会被计算出来。我的意思是:
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函数。如果你想对它进行求导等操作,那就会比较复杂了,我很抱歉。