Maple V5 到 Maple 18 - 如何创建变量列表?

Maple V5 to Maple 18 - How to create a list of variables?

我92年用Maple V5写了一些函数,用Groebner基础解决了一些问题。从那以后,我一直使用 Maple 进行简单的计算,因此我的编程技能早已被遗忘。我当时编写和使用的大部分功能都不再有效,我正在尝试返回并将它们更新到我目前拥有的 Maple 版本,即 Maple 18。

问题: a) 是否有自动更新旧 Maple 函数的工具? b) vars := [x.(1 .. n)] 等命令曾经有效,但现在无效了。 ideia 是创建一个包含 x1,x2,.. xn 的列表。我知道 seq(x[i], i = 1 .. 5) 会创建一个包含 x_1、x_2 的列表……但它并不完全相同。 c) 欢迎提供如何使更新过程顺利进行的提示和建议。

谢谢

埃德

您要查找的命令是

vars:= [x||(1..n)];

Maple V 5 于 1997 年发布。几乎所有在该版本中可用的记录命令今天仍然有效。 92 年的当前版本是 Maple V。今天的当前版本是 Maple 2016,而不是 Maple 2018。我不知道有任何自动更新工具。

如果您需要翻译更多代码,请告诉我。

Maple V Release 5Maple 6 之间的语言发生了一些变化,并替换了 . || 就是其中之一。

Maple 6(如果我记得的话还有 7)附带了一个额外的二进制文件 updtsrc,它可以作用于 Maple 源文件并进行文本替换。例如,如果我从一个纯文本文件 var.mpl 开始,其中只包含这个,

vars := [x.(1 .. n)];

然后应用 shell 命令 updtsrc var.mpl 我得到了这个输出,

`.` has been replaced by `||`; see ?||
vars := [x||(1 .. n)];

我在 Ubuntu 14.04.4 LTS Linux 上使用 (redhat) updtsrc 从 HTTP link 下载的二进制文件 Linux在 this 页上。

如果您的 Maple V 源位于 .mws 工作表文件中,那么您可能必须将输入导出到纯文本文件。

我还没有尝试在 MS-Windows 上(在纯文本文件、DOS window 或 Powershell 中)(虽然该页面的 zip 文件确实解压缩到 updtsrc.exe 文件)。

因此,如果您有大量包含 Maple V 和 Maple 6 之间语言不兼容的旧代码,那么您可以尝试使用此方法来自动转换。

在 Maple 6 和 Maple 18 之间有一些命令被弃用(例如,小写 vector),但几乎没有进一步的语言变化(向后不兼容)。

我建议您阅读 Maple 18 中的帮助页面以了解语言更新。我特别建议您查看这些帮助主题的帮助页面(在帮助浏览器的搜索栏中输入这些主题):

updtsrc

updates,Maple6,compatibility

至于涉及 vector 的第二个示例,确实 vector 已被弃用并被 Vector 命令取代。

但即使在 MapleV R5 中,您也不应该真正在矢量 f 上使用 op(f)。更正确的应该是 eval(f)evalm(f)。例如,

f:=vector([-x1^2,x2*u]);

                                            [   2      ]
                                       f := [-x1 , x2 u]

var:=u;

                                            var := u

subs(var=cat(var,0), eval(f));

                                         [   2       ]
                                         [-x1 , x2 u0]

现在,假设您在上面使用 Vector。在那种情况下,在 subs 调用中使用 op(f) 会产生您引用的错误,因为与 vector 不同,Vector 野兽没有姓氏评估。

f:=Vector([-x1^2,x2*u]);

                                               [   2]
                                          f := [-x1 ]
                                               [    ]
                                               [x2 u]

var:=u;

                                            var := u

subs(var=cat(var,0), op(f));
Error, invalid input: subs received 2, which is not valid for
its 2nd argument

你仍然可以在这里使用eval(f),但实际上没有必要。

subs(var=cat(var,0), eval(f));

                                            [   2 ]
                                            [-x1  ]
                                            [     ]
                                            [x2 u0]


subs(var=cat(var,0), f);

                                             [   2 ]
                                             [-x1  ]
                                             [     ]
                                             [x2 u0]

最后,尝试下载并安装点发布版 Maple 18.02 而不是坚持使用 Maple 18.00。你可以发现 here.