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

时间:2016-08-08 17:13:23

标签: maple

我在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)非常欢迎如何平滑更新过程的提示和建议。

由于

2 个答案:

答案 0 :(得分:2)

您正在寻找的命令是

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

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

如果您需要更多代码翻译,请与我们联系。

答案 1 :(得分:1)

Maple V Release 5 Maple 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上使用从this页面上的Linux的HTTP链接下载的(redhat)updtsrc二进制文件做到了。

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

我还没有在MS-Windows上尝试(在纯文本文件,DOS窗口或Powershell中)(尽管该页面的zip文件已解压缩到updtsrc.exe文件)。 / p>

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

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

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

updtsrc

updates,Maple6,compatibility

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

但即使在MapleV R5中,你也不应该在向量op(f)上使用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。在这种情况下,在op(f)调用中使用subs会产生您引用的错误,因为与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]

最后,尝试下载并安装Point-release Maple 18.02,而不是坚持使用Maple 18.00。你可以找到here