Минимизация функций с ограничениями равенства в Mathematica 8 - PullRequest
7 голосов
/ 20 мая 2011

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

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

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

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

Ответы [ 3 ]

3 голосов
/ 20 мая 2011

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

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

То есть, то, что вы показываете выше, является ошибкой, которая любезно исправлена ​​в будущем выпуске.

Даниэль Лихтблау Wolfram Research

2 голосов
/ 20 мая 2011

Ваш синтаксис выглядит неправильно:

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

, который запрашивает запуск x со значением y.Это не имеет большого смысла для меня.

Возможно, вы пытаетесь сделать:

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

Видимо, ваш синтаксис действителен .Считайте Minimize, как показано выше, возможным решением вашей проблемы.

1 голос
/ 20 мая 2011
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 продолжать поиск , даже если он встречает бесконечное выражение?Кто-нибудь может поделиться вашей идеей?

спасибо ^ _ ^

...