Минимизация функций с ограничениями равенства в 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 продолжать поиск, даже если он встречает бесконечное выражение? Кто-нибудь может поделиться вашей идеей?
спасибо ^_^