Maple - 代入方程

时间:2017-05-11 00:35:57

标签: function substitution maple

我在设置功能时遇到了困难,我将x1[1]x2[1]替换为其中。任何帮助将不胜感激。

我的代码是:

 restart;
 with(LinearAlgebra);
 x1[1] := -2+1606*alpha;
 x2[1] := 2+400*alpha;
 f := proc (alpha) options operator, arrow; (-x1[1]^2+1)^2+100*(-x1[1]^2+x2[1])^2 end proc;

f的输出会离开x1[1]x2[1],并且不会根据需要将其替换为-2+1600*alpha2+400*alpha

f(0);然后没有给出所需的输出409。

我可以在身体中替换-2+1606*alpha2+400*alpha,如下面的函数g所示。虽然这不是我想要的,因为我希望它可以采用x1[1]x2[1]设置的任何内容,而不是手动执行。

g := proc (alpha) options operator, arrow; (1-(1606*alpha-2)^2)^2+100*(2+400*alpha-(1606*alpha-2)^2)^2 end proc
g(0);

此处g(0);根据需要给出了409。

我附上了一张照片,下面是枫木输出在屏幕上的显示方式。

enter image description here

1 个答案:

答案 0 :(得分:2)

在表达式上应用运算符过程时,Maple会在评估之前执行。在表达式

 f := proc (alpha) options operator, arrow; (-x1[1]^2+1)^2+100*(-x1[1]^2+x2[1])^2 end proc;

与使用“箭头”符号相同

 f2 := alpha -> (-x1[1]^2+1)^2+100*(-x1[1]^2+x2[1])^2;

然后Maple正在寻找任何alpha。空无一人。然后,当您调用f(0)时,将使用运算符调用中的(不存在的)alpha来计算表达式。因此,f(x) = f(0)适用于任何xFrom the help page

  

使用选项箭头还会禁用Maple简化规则,该规则将运算符表达式中的任何非本地名称添加到参数列表中。该选项对模块没有意义。

相反,您可以使用unapply运算符,该运算符返回计算表达式的运算符。如果将变量expr定义为函数内容,则会更加清晰。

expr := (-x1[1]^2+1)^2+100*(-x1[1]^2+x2[1])^2;

f := alpha -> expr;
h := unapply(expr, alpha);

h(0); # returns 409