Mathematica: поиск условий для положительной вещественной части комплексного числа, неожиданного / избыточного вывода Reduce - PullRequest
5 голосов
/ 08 января 2012

Мне нужно найти условия, чтобы действительная часть комплексного числа была отрицательной. Я думал, что сокращение будет идеально для этого, но это дает избыточный вывод (даже после упрощения). Например:

In[543]: Reduce[{Re[-1 - Sqrt[a - b] ] < 0, a > 0, b > 0}, {a, b}, Complexes]
Out[543]: a > 0 && (0 < b < a || b >= a)  

Поскольку предполагается, что a и b являются действительными, поскольку они проявляются в неравенстве, не требуется никаких дополнительных предположений об отношении между a и b, поэтому я ожидаю следующий результат:

Out[543]: a > 0 && b > 0  

есть ли веская причина, почему это не получается? (На мой взгляд) избыточные результаты накапливаются для более сложных выражений, и мне нужно уменьшить их довольно много. Есть ли хитрость, чтобы получить ожидаемый результат? Я поиграл с выбором Reals в качестве домена и вообще без выбора Domain, но на самом деле ничто не дает мне то, что я хочу. Кстати, я анализирую устойчивость неподвижных точек, проверяя собственные значения ... очень распространенная задача.

Ответы [ 2 ]

4 голосов
/ 08 января 2012

Я не знаю, почему Mathematica не вернет ожидаемый вами результат за один шаг, но вот как получить его за два шага:

Mathematica graphics

Как правило,две функции, которые могут иметь дело с неравенствами в общем случае, это Reduce и LogicalExpand.(Но мои знания в этой области очень ограничены!) Я верю, что (Full)Simplify будет использовать только последний.


Комментарий по настройке доменов в Reduce:

Примечаниев документации сказано: «Если dom - это Reals или подмножество, такое как Integer или Rationals, то все константы и значения функций также ограничены, чтобы быть действительными».Следовательно, если бы вы указали домен как Reals, как в ответе @ belisarius, Reduce вернул бы 0 < b <= a, что необходимо для того, чтобы Sqrt[a-b] также было реальным.

2 голосов
/ 09 января 2012

Оберните выражение Re[...] с помощью ComplexExpand, и вы получите ожидаемый результат a > 0 && b > 0.

...