【问题标题】:How do I use value of variable in Maple如何在 Maple 中使用变量的值
【发布时间】:2020-04-07 11:09:17
【问题描述】:

如何让 Maple 在表达式的 RHS 中给出变量的值,而不是将其视为表达式中的变量。在下面的代码中,我想要一个 x 的三个函数的列表,它们是具有不同偏移量的二次函数,但这不是我得到的:

ix := [-1,0,1]:
b := []:
for a in ix
do
  b := [op(b),x->(x-a)^2];
end do;

输出是

虽然我希望它是(最后一行)

b := [ x -> (x+1)^2, x -> x^2, x -> (x-1)^2 ]

【问题讨论】:

    标签: maple


    【解决方案1】:

    您的问题是您试图在过程主体的构造中使用a的值,而不是“表达式的RHS”正如你所说。

    尽量不要在这种情况下使用“函数”一词,因为它只会混淆表达式和过程之间的区别。

    这是一种从ix 获取值的方法,以替换生成的过程列表中的a,正文中带有(x-a)^2

    restart;
    ix := [-1,0,1]:
    
    b := []:
    for a in ix do
      b := [op(b), unapply((x-a)^2,x)];
    end do:
    b;
    
        [x -> (x+1)^2, x -> x^2, x -> (x-1)^2]
    

    以这种方式构造列表是低效的,通过重复连接它们。由于该练习在性能上的扩展性很差,因此您真的应该放弃它作为一种练习。

    您可以通过调用seq 来构建整个列表。

    Flist := [ seq( unapply((x-a)^2,x), a in ix ) ]:
    
    Flist;
    
        [x -> (x+1)^2, x -> x^2, x -> (x-1)^2]
    

    这里,Flist 是一个过程列表,每个过程都可以通过使用参数调用它来计算一个值。

    Flist[1];
    
                  x -> (x+1)^2
    
    Flist[3](3.4);
    
                      5.76
    
    #plot(Flist, -2..2);
    

    注意:以箭头符号x -> ... 显示的过程称为操作符

    为了好玩,这里有等价物,使用表达式

    Elist := [ seq( (x-a)^2, a in ix ) ]:
    
    Elist;
    
            [       2   2         2]
            [(x + 1) , x , (x - 1) ]
    
    Elist[1];
    
                           2
                    (x + 1) 
    
    eval(Elist[3], x=3.4);
    
                      5.76
    
    #plot(Elist, x=-2..2);
    

    还有其他方法可以生成过程,以编程方式指定正文中的 a 值。 unapply 命令不是唯一可能的机制,尽管它对您的示例来说是最简单的。

    另一种方法是替换,例如,

    generic := x -> (x-_dummy)^2:
    
    Hlist := [ seq( subs(_dummy=a, eval(generic)), a in ix ) ]:
    
    Hlist;
    
        [x -> (x+1)^2, x -> x^2, x -> (x-1)^2]
    

    【讨论】:

    • 感谢您的回答,以及所有额外内容(包括命名法课程)。这就是我所追求的,然后是一些?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-18
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    相关资源
    最近更新 更多