Mathematica中使用等式约束的函数最小化8

时间:2011-05-20 11:52:06

标签: wolfram-mathematica mathematica-8

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

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

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

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

3 个答案:

答案 0 :(得分:3)

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

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

也就是说,您在上面展示的是一个已经为将来的发布版本自行修复的错误。

Daniel Lichtblau Wolfram Research

答案 1 :(得分:2)

您的语法似乎不正确:

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

要求以x的值启动y。这对我来说没什么意义。

也许你正在尝试:

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

显然您的语法 有效。如上所示,请考虑Minimize,以解决您的问题。

答案 2 :(得分: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遇到无限的表达,如何迫使mma 继续搜索?有人可以分享你的想法吗?

谢谢^ _ ^