使用 Pari-GP 的代码创建图形,但使用 Sage 的绘图工具

Creating graphs using code from Pari-GP, but using Sage's graphing tools

各位!

我知道这可能是个愚蠢的问题,但我在使用 Sage 时遇到了很多麻烦,这让我非常沮丧。为了给出一些解释,我完全在 pari-gp 中编码。我在 pari-gp 中的代码没有任何问题,我只是在将我的代码与 Sage 接口时遇到了问题。其中,这是 Sage 的支持,您可以在 Sage 中 运行 pari-gp 代码。我基本上想 运行 我在 pari-gp 中的所有进程,但我想利用 Sage 的所有图形协议。

我想做的事情再简单不过了。我有一个运行良好的函数 test(x,y),它产生一个实数。 运行我在 pari 中没有任何问题,一切都是犹太洁食。我只想做一个 test(x,y) = z 的图表。现在我知道如何在 sage 中 运行 这个命令,但我不知道如何接口使得 test 实际上是一个来自 Pari 代码的程序 运行ning。

我很想用 Sage 编写我所有的东西,但那是不可能的。我需要 Pari 语言,所以在你说我可以用 Sage 翻译所有内容之前,这是不可能的。我只是想不通如何将 Pari 与 Sage 连接起来。我知道这是可能的;见鬼,他们在主网站上做广告。我只是不清楚如何执行以下操作:

1.) 从我的 pari-gp 根目录读取一个文件:gp.read("myfile.gp").

2.) 继承功能,例如 gp("test(x,y)"),现在 运行 就好像它 运行 在 GP 终端中一样。

3.) 使用 Sage 的绘图协议绘制所述函数 test(x,y)

非常感谢任何帮助。我知道我只是忘了做一些愚蠢的事情,或者我在做这件事的过程中遗漏了一步。

非常感谢任何帮助!

让我们开始:

sage: gp("test(x, y) = sin(x*y)")
(x,y)->sin(x*y)
sage: gp("test(1, 1)")
0.84147098480789650665250232163029899962
sage: type(_)
<class 'sage.interfaces.gp.GpElement'>

所以 gp("test(1, 1)") 的打印版本看起来像一个数字,但它不是一个 float 实例。请注意,py3 有一些 f-strings,因此我们可以轻松地在 gp("test(...)") 中插入变量 xy 的值。我将使用 f-strings 来定义 sage 函数...

离最终剧情也不远了:

sage: f = lambda x, y:    float( gp(f"test({x}, {y})") )
sage: plot3d(f, [0, pi], [0, pi])
Launched html viewer for Graphics3d Object