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
。
私は何を間違っていますか?
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 関数を使用できます。差別化したい場合などは、難しいと思います。