在Mathematica 8中使用简单相等的约束时,最小化不起作用。例如。
FindMinimum[{x^2 + y^2, y == 1}, {x, y}]
在Mathematica 6中正常工作,但在版本8中出错。还有其他人可以确认(或解释)这个吗?看起来像使用约束修复其中一个参数会使版本8变得混乱。放置xy==1
是可以的,也可以是任何不等式。
对此有任何简单的解决方法吗?我试过更改Method
,没有运气。我想将所有参数保留在参数列表中,但是使用简单约束来保留其中一些参数,而不是从列表中删除参数名称。我在版本6中有一个工作代码,在8中不再有用。
答案 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 继续搜索?有人可以分享你的想法吗?
谢谢^ _ ^