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 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 上使用 (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.
我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 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 上使用 (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.