Mathematica: как найти максимум выражения с показателями в качестве параметров - PullRequest
3 голосов
/ 21 октября 2011

Я использую Mathematica 8, чтобы найти аналитическое решение для максимума выражения. Когда я использую команду «Развернуть», чтобы попытаться найти решение, она просто повторяет то, что я ввел, подразумевая, что Mathematica не знает, как это сделать. Я сузил проблему до этого: кажется, что если есть показатель степени, который является параметром, Maximize не работает. Вот пример. Это функция правдоподобия из испытания Бернулли, где a и b - успехи и неудачи.

Maximize[{t^a*(1 - t)^b, {t >= 0, t <= 1, a > 0, b > 0}}, {t}]

В данном случае я хотел бы получить a/(a+b). Если я предоставлю константы типа 3 и 2 вместо a и b, тогда будет найдено решение.

Есть ли другой способ указать выражение или ограничения, чтобы Mathematica могла найти максимум для выражений с показателями, которые являются параметрами? Я чувствую, что что-то упускаю, потому что это так просто.

Ответы [ 2 ]

3 голосов
/ 21 октября 2011

Я играл с ним, то есть перемещал условия, изменял форму выражения, удалял условия, и я не могу заставить Maximize вести себя, либо. Тем не менее, это может быть решено напрямую, следующим образом

Solve[ D[ t^a (1 - t)^b, t ] == 0, t]

что дает, как вы сказали, {{t -> a/(a + b)}}. Иногда Reduce может использоваться, чтобы помочь понять, почему такая функция, как Maximize, ведет себя неправильно, давая более полную картину пространства решений. Он вызывается как Solve следующим образом

Reduce[ D[ t^a (1 - t)^b, t ] == 0, t]

дает

((-1 + t) t != 0 && a == 0 && b == 0) || 
 (a + b != 0 && a b != 0 && t == a/(a + b)) || 
 (Re[b] > 1 && t == 1) || 
 (Re[a] > 1 && t == 0)

что не так уж и полезно в данном случае.

1 голос
/ 29 декабря 2011

Функция Максимизировать в Mathematica, примененная к экспоненциальной функции, работает, только если вы максимизируете все параметры (a, b и t в вашем случае).Теперь вы максимизируете только значение t, которое не работает.

Рассмотрим простой пример (с использованием Mathematica 8.0):

Maximize[{Exp[a + b], a <= 1, b <= 1}, {a, b}]
Maximize[{Exp[a + b], a <= 1, b <= 1}, {a}]
Maximize[{a + b, a <= 1, b <= 1}, {a}]
...