【问题标题】:How to make "at()" function evaluate en expression?如何使“at()”函数评估 en 表达式?
【发布时间】:2019-06-14 09:24:11
【问题描述】:

我尝试了函数“at”,其中包含一些函数,然后将输出提供给某个变量。 Maxima 成功区分了表达式,但随后“at”失败,输出为“at(--some successful done function--, z=l)=0”。我需要“at”才能正常工作,将结果提供给变量。

(%i34)  a: 45*z^2*l-1; /*expression*/
eq1: at(diff(a, z, 1), z = l)=0; /*giving the meaning of the operations to eq1*/
at(diff(a, z, 1), z = l)=0; /*trying the same without giving the result to a variable*/
ev(eq1, eval); /*trying ev*/
(a) l*z^2* 45-1
(eq1)    at(2*l*z* 45,z=l)=0
(%o34)  2*l^2* 45=0
(%o35)  at(2*l*z* 45,z=l)=0    

因此,当我不将 at 的结果提供给其他变量时,这很好,但是当我尝试时 - 即使进行额外评估,它也会失败。这是如何运作的?这也在 Linux 上进行了尝试。在 Windows 上我没有同样的问题。

【问题讨论】:

    标签: maxima wxmaxima


    【解决方案1】:

    我得到以下输出。 %o3 不是你要找的吗?

    (%i2) a: 45*z^2*l-1;
                                     2
    (%o2)                      45 l z  - 1
    (%i3) eq1: at(diff(a, z, 1), z = l)=0;
                                    2
    (%o3)                       90 l  = 0
    

    我在 MacOS 上使用 Maxima 5.42.2 工作。 build_info(); 在您的 Linux 系统上报告什么?一些 Linux 发行版打包了一个古老版本的 Maxima;也许你可以得到一个更新的版本。实际上,在 Linux 系统上从源代码 tarball 构建 Maxima 非常容易;如果你想走那条路,我可以提供帮助。

    【讨论】:

    • 我有以下版本:Maxima version: "5.41.0" Maxima build date: "2018-04-09 18:33:03" Host type: "x86_64-pc-linux-gnu" Lisp implementation type: "GNU Common Lisp (GCL)" Lisp implementation version: "GCL 2.6.12" 所以它很新鲜。奇怪的是,我只在干净的 Maxima 中得到与你相同的结果。当我尝试 wxMaxima 中的代码时,奇怪的事情发生了。两者都使用相同的版本。但是 wxMaxima 只是不想以某种方式对此进行评估,这很奇怪。哦,也是我的错 - 我没有在标签中提到 wxMaxima,抱歉
    • 好的,我明白出了什么问题。我在 wxMaxima 中使用的代码最初来自我的 Windows 系统。我通过 git 在我的家用电脑和 linux 笔记本之间同步了代码。而且似乎 Windows 部署了一些 Linux 的 wxMaxima 不喜欢的特性——Maxima 本身也是如此。 wxMaxima 没有在输出中显示它们,但 Maxima 显示了,这就是我发现它的方式。在我手动重写脚本的某些部分后,它突然起作用了。认为我可以关闭问题并将您的答案标记为已选择。
    • 我很高兴听到您成功了。作为记录,Maxima 接受任何流行字符编码中的任何非空格字符作为符号字符,所以可能不是多余的字符被拒绝,而是它们被接受为符号名称的一部分,因此创建了符号与内置的不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多