Предупреждение: У меня нет большого практического опыта с этим, поэтому примеры ниже не проходят тщательной проверки (т.е. я не знаю, могут ли слишком общие предположения нарушить то, о чем я не думал ).
Вы можете использовать $Assumptions
для определения постоянных допущений:
Мы могли бы сказать, что все a1[s], a2[s], a3[s]
являются действительными:
$Assumptions = {(a1[s] | a2[s] | a3[s]) \[Element] Reals}
Но если у вас есть, например, a1[x]
(не a1[s]
), тогда это не будет работать. Поэтому мы можем немного улучшить его, используя шаблоны:
$Assumptions = {(a1[_] | a2[_] | a3[_]) \[Element] Reals}
Или просто скажите, что все значения a[_]
действительны:
$Assumptions = {a[_] \[Element] Reals}
Или даже быть смелым и сказать, что все реально:
$Assumptions = {_ \[Element] Reals}
(Интересно, что это ломает)
AppendTo
полезно для добавления к $Assumptions
и сохранения предыдущих предположений.
Как и Assuming
, это будет работать только для таких функций, как Simplify
или Integrate
, которые имеют опцию Assumtpions
. D
это не такая функция.
Некоторые функции, такие как Reduce
, FindInstance
и т. Д., Имеют возможность работать только в области вещественных чисел, целых чисел и т. Д., Что предполагает, что все выражения и подвыражения, с которыми они работают, являются действительными.
ComplexExpand[]
и иногда FunctionExpand[]
также могут быть полезны в подобных ситуациях (но не здесь). Примеры: ComplexExpand[Abs[z]^2, TargetFunctions -> {Sign}]
и FunctionExpand[Abs'[x], Assumptions -> {x \[Element] Reals}]
.
Обычно , насколько я знаю, математического способа не сказать Mathematica о том, что переменная реальна. Это возможно сделать только формально, с использованием шаблонов и только для определенных функций, которые имеют опцию Assumptions
. Под «формальным» я подразумеваю, что если вы скажете ему, что a[x]
реально, оно не будет автоматически знать, что a'[x]
также реально.