Maple:指定要最大化的变量

Maple: specify variable over which to maximize

这是一个非常简单的问题,但出乎意料的是在网上发现的很少...

我想在 maple 中找到函数的最小值,我不确定如何指示哪个是感兴趣的变量?让我们举一个非常简单的例子,我想要 x 中带有参数 a、b 和 c 的二次表达式的符号最小值。

在不指定任何内容的情况下,它会最小化所有变量 a、b、c 和 x。

f4 := a+b*x+c*x^2
minimize(f4, location)

我试过在函数中指定变量,也没用:

f5 :=(x) ->a+b*x+c*x^2
minimize(f5, location)

我应该怎么做?而且,如果我想要两个以上的变量 x 和 y,我该怎么办?

fxy := a+b*x+c*x^2 + d*y^2 +e*y
f4 := a+b*x+c*x^2:

extrema(f4, {}, x);

                              /         2\ 
                              |4 a c - b | 
                             < ---------- >
                              |   4 c    | 
                              \          / 

fxy := a+b*x+c*x^2 + d*y^2 +e*y:

extrema(fxy, {}, {x,y});

                       /           2        2\ 
                       |4 a c d - b  d - c e | 
                      < --------------------- >
                       |        4 c d        | 
                       \                     / 

极值的性质将取决于参数的值。对于上面的第一个示例(x 的二次方),它将取决于 c 的符号。

命令 extrema 接受可选的第四个参数,例如未分配的名称(或未引用的名称),用于分配候选解决方案点(作为其计算的副作用)。例如,

restart;

f4 := a+b*x+c*x^2:

extrema(f4, {}, x, 'cand');

                                               2
                                       4 a c - b
                                     {----------}
                                         4 c

cand;

                                             b
                                     {{x = - ---}}
                                             2 c

fxy := a+b*x+c*x^2 + d*y^2 +e*y:

extrema(fxy, {}, {x,y}, 'cand');

                                           2        2
                                4 a c d - b  d - c e
                               {---------------------}
                                        4 c d

 cand;

                                        b          e
                               {{x = - ---, y = - ---}}
                                       2 c        2 d

或者,您可以设置偏导数并手动求解。请注意,对于这两个示例,solve.

仅返回一个结果(每个)
restart:

f4 := a+b*x+c*x^2:

solve({diff(f4,x)},{x});

                                             b
                                     {x = - ---}
                                            2 c

normal(eval(f4,%));

                                               2
                                      4 a c - b
                                      ----------
                                         4 c

fxy := a+b*x+c*x^2 + d*y^2 +e*y:

solve({diff(fxy,x),diff(fxy,y)},{x,y});

                                        b          e
                                {x = - ---, y = - ---}
                                       2 c        2 d

normal(eval(fxy,%));

                                           2        2
                                4 a c d - b  d - c e
                                ---------------------
                                        4 c d

可以通过发出命令 showstat(extrema) 查看 extrema 命令的代码。您可以看到它如何解释 solve 返回多个结果的情况。