2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 [Wolfram Mathematica] Тип переменной
Сообщение25.02.2015, 23:02 
Аватара пользователя
Можно ли как-то указать Mathematica тип переменной в выражении? Дело в том, что если попросить посчитать, например,
Код:
Conjugate[E^(I x)]
то в ответ выдаст
Код:
E^(-I Conjugate[x])
Видимо, программа считает $x$ комплексным числом, а надо чтобы считала действительным, для которого $x^* = x$.

 
 
 
 Re: [Wolfram Mathematica] Тип переменной
Сообщение26.02.2015, 00:21 
Аватара пользователя
Wolfram Mathematica ничего не предполагает, она делает запрограммированные замены. Кстати, переменные не типизируются.

Для упрощения можно использовать Simplify, FullSimplify, Refine и т. п. с полем Assumptions -> Element[x, Reals]

Также можно сразу указать [noparse]$Assumptions = $Assumptions && Element[x, Reals][/noparse] для всего документа или Assuming[Element[x, Reals], ...] для локальных вычислений.

P.S. блин, я не знаю, как убрать парсинг: $Assumption

 
 
 
 Re: [Wolfram Mathematica] Тип переменной
Сообщение26.02.2015, 00:52 
Аватара пользователя
$Assumptions. Mysterious Light, в чём проблема?

 
 
 
 Re: [Wolfram Mathematica] Тип переменной
Сообщение26.02.2015, 00:53 
Аватара пользователя
Спасибо, помогло.

Mysterious Light в сообщении #982647 писал(а):
P.S. блин, я не знаю, как убрать парсинг: $Assumption
Наверно, использовать тег [code].

Есть ещё вопрос. Можно ли научить математику преобразовывать $e^{ix} + e^{-ix}$ в $2 \cos x$? Комбинация ExpToTrig и Simplify не работает.

 
 
 
 Re: [Wolfram Mathematica] Тип переменной
Сообщение26.02.2015, 00:58 
Аватара пользователя
Kitozavr, FullSimplify работает (проверено в десятке).

 
 
 
 Re: [Wolfram Mathematica] Тип переменной
Сообщение26.02.2015, 01:26 
Аватара пользователя
Спасибо.

 
 
 
 Re: [Wolfram Mathematica] Тип переменной
Сообщение26.02.2015, 01:43 
Аватара пользователя

(Оффтоп)

Aritaborian, написать $Assumptions не сложно, ибо один доллар, а написать формулу с двумя вхождениями этого имени уже представляет проблему для меня, потому что парсер видит в двух долларах намёк на инлайн-формулу.

А [cоde] не хочу использовать, потому что это не код, а небольшая часть кода, как имена, и потому они должны инлайниться.


По моему опыту, лучше использовать связку ComplexExpand/Simplify:
Код:
Simplify[ComplexExpand[Exp[I x] + Exp[-I x]], Assumptions -> Element[x, Reals]]

В отличие от FullSimplify, ComplexExpand разово заменяет все экспоненты на тригонометрические функции и Simplify сразу же подчищает за ним, а не анализирует выражение на всех уровнях, пытаясь применить все известные замены ради нахождения самой оптимальной формы выражения, что весьма долго работает на достаточно сложных выражениях.

 
 
 
 Re: [Wolfram Mathematica] Тип переменной
Сообщение26.02.2015, 01:51 
Аватара пользователя
Mysterious Light, про доллары понял. Был немножко неправ, прошу прощения.
Mysterious Light в сообщении #982686 писал(а):
По моему опыту, лучше использовать связку ComplexExpand/Simplify
Я отвечал на конкретный вопрос и быстро помог пользователю. Ваш же ответ, конечно же, более полезен в перспективе.

(Оффтоп)

Это как скорая помощь и долговременная терапия. Ну, вы понимаете.

 
 
 
 Re: [Wolfram Mathematica] Тип переменной
Сообщение26.02.2015, 02:19 
Аватара пользователя
Aritaborian в сообщении #982689 писал(а):
Mysterious Light в сообщении #982686 писал(а):
По моему опыту, лучше использовать связку ComplexExpand/Simplify
Я отвечал на конкретный вопрос и быстро помог пользователю. Ваш же ответ, конечно же, более полезен в перспективе.

(Оффтоп)

Это как скорая помощь и долговременная терапия. Ну, вы понимаете.

Оно-то так.

Гладя на вопросы ТС, я предположил, что один из последующих может быть связан с неудовлетворительной скоростью FullSimplify. Для меня это был долгое время болезненный вопрос, поэтому я решил сразу показать схему, по моим меркам универсальную в подобных задачах, особенно если выражение заведомо чисто действительно или чисто мнимо. Лишним не будет.

Если у кого есть лучшие предложения, советы, те могут написать в теме. Опять же, думаю, ТС против не будет.

 
 
 
 Re: [Wolfram Mathematica] Тип переменной
Сообщение26.02.2015, 04:59 
Mysterious Light, есть средство против долларов! (Ура!) :-) Тут есть тег notex, в содержимом которого они не парсятся. Проверка:

$Assumptions = $Assumptions ~Join~ {Element[x, Integers]};

Это было записано как

[​notex][​tt]$Assumptions = $Assumptions ~Join~ {Element[x, Integers]};[​/tt][​/notex]

-- Чт фев 26, 2015 07:01:30 --

А задом наперёд вроде не получится. И последний код при копировании не даст того же, потому что пришлось туда вставить пробелы нулевой ширины.

 
 
 [ Сообщений: 10 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group