2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 [Wolfram Mathematica] Тип переменной
Сообщение25.02.2015, 23:02 
Аватара пользователя


03/03/10
1341
Можно ли как-то указать Mathematica тип переменной в выражении? Дело в том, что если попросить посчитать, например,
Код:
Conjugate[E^(I x)]
то в ответ выдаст
Код:
E^(-I Conjugate[x])
Видимо, программа считает $x$ комплексным числом, а надо чтобы считала действительным, для которого $x^* = x$.

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


29/05/11
227
Красноармейск, Донецкая обл.
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 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
$Assumptions. Mysterious Light, в чём проблема?

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


03/03/10
1341
Спасибо, помогло.

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

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

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


11/06/12
10390
стихия.вздох.мюсли
Kitozavr, FullSimplify работает (проверено в десятке).

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


03/03/10
1341
Спасибо.

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


29/05/11
227
Красноармейск, Донецкая обл.

(Оффтоп)

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 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Mysterious Light, про доллары понял. Был немножко неправ, прошу прощения.
Mysterious Light в сообщении #982686 писал(а):
По моему опыту, лучше использовать связку ComplexExpand/Simplify
Я отвечал на конкретный вопрос и быстро помог пользователю. Ваш же ответ, конечно же, более полезен в перспективе.

(Оффтоп)

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

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


29/05/11
227
Красноармейск, Донецкая обл.
Aritaborian в сообщении #982689 писал(а):
Mysterious Light в сообщении #982686 писал(а):
По моему опыту, лучше использовать связку ComplexExpand/Simplify
Я отвечал на конкретный вопрос и быстро помог пользователю. Ваш же ответ, конечно же, более полезен в перспективе.

(Оффтоп)

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

Оно-то так.

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

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

 Профиль  
                  
 
 Re: [Wolfram Mathematica] Тип переменной
Сообщение26.02.2015, 04:59 
Заслуженный участник


27/04/09
28128
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 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group