SageMath 中的`implicit_plot` 复杂函数

`implicit_plot` complex function in SageMath

我想为复数 z 绘制方程 |z - 1| = 1 描述的圆。我希望以下内容有效:

f(x, y) = abs(x +  i * y -1)

implicit_plot(f(x, y) - 1, xrange=(-2, 2), yrange=(-2, 2))

但它失败了:

TypeError: unable to coerce to a real number

这看起来很奇怪,因为 abs 不是 return 复数。以下失败并出现相同的错误:

f(x, y) = abs(x +  i * y -1)

implicit_plot((f(x, y) - 1).real_part(), xrange=(-2, 2), yrange=(-2, 2))

绘制此函数的正确方法是什么?

定义f的命令将其定义为符号函数:

sage: f(x, y) = abs(x +  i * y - 1)

sage: f
(x, y) |--> abs(x + I*y - 1)
sage: f(x, y)
abs(x + I*y - 1)

sage: parent(f)
Callable function ring with arguments (x, y)
sage: parent(f(x, y))
Symbolic Ring

如问题中那样绘制 f(x, y) - 1 的绘图命令 触发内部代码转换所需的表达式 进入“快速调用函数”,但失败了。

一种解决方法,适用于 Sage 中的许多绘图问题, 是改用 lambda 函数

为此,只需在表达式前引入lambda x, y:xy 中绘制:

sage: implicit_plot(lambda x, y: f(x, y) - 1, xrange=(-2, 2), yrange=(-2, 2))
Launched png viewer for Graphics object consisting of 1 graphics primitive