gpt4 book ai didi

wolfram-mathematica - 最大化 Mathematica 中计算元素的函数

转载 作者:行者123 更新时间:2023-12-04 06:35:57 25 4
gpt4 key购买 nike

我将 Mathematica 8 中的调试问题简化为类似于以下代码的问题:

f = Function[x,
list = {1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5};
Count[list, x]
];

f[4]
Maximize{f[x], x, Integers]

输出:
4
{0, {x->0}}

那么,虽然当 x 等于 4 时获得了函数 f 的最大值(如第一行输出中所确认的那样),但为什么 Maximize 会返回 x->0(输出第 2 行)?

最佳答案

使用 Trace 可以很容易地找到这种行为的原因。 .发生的情况是您的函数在 Maximize 内部进行评估,仍然符号 x ,并且由于您的列表不包含符号 x , 结果为零。实际上,您调用Maximize[0,x,Integers] ,因此结果。您可以做的一件事是通过使用具有限制性模式的模式定义函数来保护函数不被立即评估,例如:

Clear[ff];
ff[x_?IntegerQ] :=
With[{list = {1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5}}, Count[list, x]]

看来 Maximize但是不能轻易处理它,但是 NMaximize能够:
In[73]:= NMaximize[{ff[x], Element[x, Integers]}, x]

Out[73]= {4., {x -> 4}}

但是,一般来说, Maximize 中的任何一个家庭职能似乎不太适合这份工作。通过显式计算最大值可能会更好,例如:
In[78]:= list = {1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5};
Extract[#, Position[#, Max[#], 1, 1] &[#[[All, 2]]]] &[Tally[list]]

Out[79]= {{4, 4}}

高温高压

关于wolfram-mathematica - 最大化 Mathematica 中计算元素的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4877546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com