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
返回多个结果的情况。
这是一个非常简单的问题,但出乎意料的是在网上发现的很少...
我想在 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
返回多个结果的情况。