7

在 Mathematica 8 中使用简单相等的约束时,最小化不起作用。例如

FindMinimum[{x^2 + y^2,  y == 1}, {x, y}]

在 Mathematica 6 中工作正常,但在版本 8 中出现错误。其他人可以确认(或解释)这一点吗?看起来用约束来修复其中一个参数会混淆版本 8。放置xy==1是可以的,任何不等式也是可以的。

有什么简单的解决方法吗?我已经尝试更改Method,没有运气。我想将所有参数保留在参数列表中,但使用简单的约束保留其中一些参数,而不是从列表中删除参数名称。我在版本 6 中有一个工作代码,在 8 中不再工作。

4

3 回答 3

3

另一种解决方法是使用版本 9。

In[1]:= FindMinimum[{x^2 + y^2, y == 1}, {x, y}]
Out[1]= {1., {x -> 0., y -> 1.}}

也就是说,您在上面显示的是一个错误,它已经为将来的版本善意地修复了。

Daniel Lichtblau Wolfram 研究

于 2011-05-20T14:05:18.797 回答
2

您的语法似乎不正确:

FindMinimum[{x^2 + y^2,  y == 1}, {x, y}]

它要求以x的值开始y。这对我来说没有多大意义。

也许您正在尝试执行以下操作:

Minimize[{x^2 + y^2, y == 1}, {x, y}]
  输出:{1, {x -> 0, y -> 1}}

显然你的语法有效的。考虑Minimize如上所示可能解决您的问题。

于 2011-05-20T12:26:47.260 回答
1
In[31]:= NMinimize[{x^2 + y^2, y == 1}, {x, y}]

Out[31]= {1., {x -> -3.20865*10^-9, y -> 1.}}

In[32]:= FindMinimum[{x^2 + y^2, 1 - 10^-10 <= y <= 1 + 10^-10}, {x, y}]

Out[32]= {1., {x -> 0., y -> 1.}}

但是,我想知道即使遇到无限表达式,如何强制mma继续搜索?有人可以分享你的想法吗?

谢谢^_^

于 2011-05-20T13:35:50.570 回答