2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 [Wolfram mathematica] получить значение индекса
Сообщение01.03.2015, 00:58 


02/05/10
49
Задача примерно такая: есть достаточно произвольный массив, допустим матрица, примерно такого вида:
$\left(
\begin{array}{cccc}
 \lambda _1 \psi _1 & \lambda _1 \phi _1 & \psi _1 & \phi _1 \\
 \lambda _2 \psi _2 & \lambda _2 \phi _2 & \psi _2 & \phi _2 \\
 \lambda _3 \psi _3 & \lambda _3 \phi _3 & \psi _3 & \phi _3 \\
 \lambda _4 \psi _4 & \lambda _4 \phi _4 & \psi _4 & \phi _4 \\
\end{array}
\right)$
Нужно выполнить замену, например:
$\psi_{2k}=-\phi^*_{2k-1}$
Непонятно как это делать, я пробовал создать шаблон с которым можно было бы сравнивать каждый элемент, но не ясно как создать такой шаблон. Или как-то исхитриться с SameQ, но тоже ничего не выходит. Мне казалось в математике должны быть какие-то мощные селекторы, которые позволяют выбрать любой кусок в выражении, но в хелпе и гугле только какие-то тривиальные примеры их использования.

Ещё один глупый вопрос: существует ли способ мержить матрицы без плясок с бубном? Я имею ввиду встроенные функции. Чтобы из трёх столбцов a,b,c составить матрицу мне пришлось использовать такую конструкцию:
Код:
Transpose[Flatten[{Transpose[a], Transpose[b], Transpose[c]}, 1]]

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

 Профиль  
                  
 
 Re: [Wolfram mathematica] получить значение индекса
Сообщение01.03.2015, 02:41 
Заслуженный участник


27/04/09
28128
Насчёт шаблона: не пробовали что-нибудь типа \[Psi][n_?EvenQ] :> -Conjugate[\[Phi][n-1]]? (Надеюсь, правильно записал не открывая M..)

-- Вс мар 01, 2015 04:44:25 --

(Как нижний индекс представляется — не помню, поэтому написал как применение. Работать должно одинаково хорошо (т. е. или плохо) с обоими.)

 Профиль  
                  
 
 Re: [Wolfram mathematica] получить значение индекса
Сообщение01.03.2015, 10:36 
Заслуженный участник


25/02/11
1786
no_name в сообщении #983872 писал(а):
Чтобы из трёх столбцов a,b,c составить матрицу мне пришлось использовать такую конструкцию:

Столбец это вложенный список список a={{a1},...} или что? Если первое, а столбцы заданы в a[k], $k=1,\ldots,n$, то так:
Код:
Transpose@Flatten[Table[a[k], {k, n}], {3}][[1]]

 Профиль  
                  
 
 Re: [Wolfram mathematica] получить значение индекса
Сообщение01.03.2015, 16:15 
Аватара пользователя


29/05/11
227
Красноармейск, Донецкая обл.
no_name, если у Вас матрица в символьном виде, то см. пост arseniiv. Может быть, нужно будет написать
Код:
Subscript[\[Psi], n_?EvenQ] :> -Conjugate[Subscript[\[Phi], 2n-1]]
В моднявеньких весиях можно как-то так
Код:
Indexed[\[Psi], {n_?EvenQ}] :> -Conjugate[Indexed[\[Phi], {2n-1}]]


no_name в сообщении #983872 писал(а):
существует ли способ мержить матрицы без плясок с бубном?
Ещё посмотрите функцию ArrayFlatten.

 Профиль  
                  
 
 Re: [Wolfram mathematica] получить значение индекса
Сообщение06.03.2015, 00:18 


02/05/10
49
arseniiv, Vince Diesel, Mysterious Light, большое спасибо, очень продвинулся.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

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



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

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


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

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