Минимизация функций с ограничениями равенства в Mathematica 8

При использовании ограничений с простым равенством в Mathematica 8 минимизация не работает. Например

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

работает хорошо в Mathematica 6, но выдает ошибки в версии 8. Может ли кто-нибудь еще подтвердить (или объяснить) это? Похоже, что исправление одного из параметров с ограничением сбивает с толку версию 8. Установка xy==1 все в порядке, также любое неравенство.

Есть ли простой способ обойти это? Я пытался изменить Method, неудачно. Я хотел бы сохранить все параметры в списке параметров, но держу некоторые из них с простым ограничением вместо удаления имени параметра из списка. У меня есть рабочий код в версии 6, который больше не работает в 8.

3 ответа

Решение

Ваш синтаксис неверен:

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 как показано выше, чтобы быть возможным обходным путем для вашей проблемы.

Другим обходным решением будет использование версии 9.

In[1]:= FindMinimum[{x^2 + y^2, y == 1}, {x, y}]
Out[1]= {1., {x -> 0., y -> 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 продолжать поиск, даже если он встречает бесконечное выражение? Кто-нибудь может поделиться вашей идеей?

спасибо ^_^

Другие вопросы по тегам