2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Короткий вопрос по Mathematica
Сообщение27.09.2014, 20:03 


08/03/11
186
_Er, если вам нужно ввести какие то свои обозначения, например, $*$ как комплексное сопряжение, попробуйте пакет Notation.
Код:
<< "Notation`";
f = ComplexExpand@Conjugate@#1 &;
Notation[ParsedBoxWrapper[
SuperscriptBox["x_", "*"]]\[DoubleLongLeftRightArrow]ParsedBoxWrapper[
RowBox[{"f", "[", "x_", "]"}]]];

z = x + I y;
SuperStar[z]

(Что бы этот код работал, нужно конвертировать ячейку в StandardForm )

 Профиль  
                  
 
 Re: Короткий вопрос по Mathematica
Сообщение27.09.2014, 23:30 


24/07/14
138
sithif и Aritaborian я бы просто сделал вот так, например:

Unprotect[Conjugate];
Conjugate[x_] := Re[x] - I Im[x] // ComplexExpand;
Protect[Conjugate];

fi = F1[r, t] + I F2[r, t];
fi*
F1[r, t] - I F2[r, t]


Проверил как оно работает: потенциал $V$, и сложную производную $D_\mu$ вычисляет нормально.

 Профиль  
                  
 
 Re: Короткий вопрос по Mathematica
Сообщение28.09.2014, 03:52 
Аватара пользователя


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

_Er в сообщении #912474 писал(а):
$\textdollar$ Assumptions = F1[r, t] $\in$ Reals;
но это как-то не помогло.
Aritaborian в сообщении #912491 писал(а):
Вот так сработало (нужно было дополнительно попросить упростить):
Assuming[F1[r, t] \[Element] Reals && F2[r, t] \[Element] Reals, Simplify@Conjugate[F1[r, t] + I F2[r, t]]]

Объявление Element[{F1[r, t]}, Reals] говорит о том, что F1[r, t] полагается действительным. Из этого машина не может сделать вывод ни о том, что F1[x, y] действителен, ни даже о том, что F1[2, 3] действителен, поскольку r и t (могут быть) несвязанные буквы. Опасно так писать, можно незаметить перехода к другим обозначениям, где всё поламается. Лучше писать Element[{F1[___], F2[___]}, Reals] или Element[{_F1, _F2}, Reals].

Vince Diesel в сообщении #912611 писал(а):
Вот так работает:
Код:
fi = F1[r, t] + I F2[r, t];
Conjugate[fi] // ComplexExpand

Комадна ComplexExpand пытается упростить выражение, предполагая, что все переменные имеют действительные значения.

Этот подход самый лёгкий, но работает, только если функции на момент вызова ComplexExpand являются неопределёнными (свободными буквами) или если они не содержат комплекснозначных членов. В противном случае есть вероятность выстрелить в ногу.

_Er в сообщении #912754 писал(а):
Vince Diesel в сообщении #912679 писал(а):
Можно определить новую команду: cj[x_]:=ComplexExpand@Conjugate[x]
Хорошая идея. Надо будет попробовать. Но вот все-таки звездочка (:conj:) в тексте выглядит как-то приятнее. Но вроде бы есть какие-то команды позволяющие зарезервированные Математикой обозначения переделывать под свои нужды. Если не ошибаюсь, это команда Unprotect[].

Один из способов — создать собственный контекст, в котором переопределить звёздочку. Тогда и конфликта не будет с другими пакетами, и можно будет переключаться между двумя контекстами.

Ещё нужно посмотреть, что предлагает sithif.

 Профиль  
                  
 
 Re: Короткий вопрос по Mathematica
Сообщение28.09.2014, 13:38 


24/07/14
138
Mysterious Light в сообщении #913017 писал(а):
Объявление Element[{F1[r, t]}, Reals] говорит о том, что F1[r, t] полагается действительным. Из этого машина не может сделать вывод ни о том, что F1[x, y] действителен, ни даже о том, что F1[2, 3] действителен, поскольку r и t (могут быть) несвязанные буквы. Опасно так писать, можно незаметить перехода к другим обозначениям, где всё поламается. Лучше писать Element[{F1[___], F2[___]}, Reals] или Element[{_F1, _F2}, Reals].
Что-то вроде бы не работает. Conjugate[fi] все равно выдает с Conjugate[F1[r,t]],Conjugate[F2[r,t]]

 Профиль  
                  
 
 Re: Короткий вопрос по Mathematica
Сообщение28.09.2014, 13:56 
Аватара пользователя


29/05/11
227
Красноармейск, Донецкая обл.
Код:
In:= fi = F1[r, t] + I F2[r, t];

In:= Simplify[Conjugate[fi], Assumptions -> Element[{_F1, _F2}, Reals]]

Out= F1[r, t] - I F2[r, t]
Или использовать $Assumptions, чтобы параметр Assumptions не такскать всюду.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу Пред.  1, 2

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



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

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


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

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