首页 文章

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

提问于
浏览
2

我在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 回答

  • 2

    您正在寻找的命令是

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

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

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

  • 1

    Maple V Release 5Maple 6 之间的语言有一些变化, . 替换 . 就是其中之一 .

    枫树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 文件) .

    因此,如果您有大量旧代码包含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 野兽没有last-name-eval .

    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 .

相关问题