2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 команды Mathematica 7, аналогичные Maple
Сообщение24.12.2011, 13:29 


24/12/11
1
Есть программа в Maple, надо тот же алгоритм проделать в Mathematica 7...
Так вот...

В программе Maple
whattype(x+y) вернёт +, т. е. тип операции
op(x+y) вернёт x, y, т. е. операнды

Никак не могу найти аналогичные команды в Mathematica 7... Может кто знает? Заранее большое спасибо...

 Профиль  
                  
 
 Re: команды Mathematica 7, аналогичные Maple
Сообщение24.12.2011, 21:36 


23/09/09
14
Код:
Hold[x + y][[1]][[0]]
Hold[x + y][[1]][[1]]  Hold[x + y][[1]][[2]]

или даже
Код:
u=x+y
u[[0]]
u[[1]] u[[2]]

 Профиль  
                  
 
 Re: команды Mathematica 7, аналогичные Maple
Сообщение24.12.2011, 23:32 
Заслуженный участник


27/04/09
28128
Прозрачнее вместо e[[0]] использовать Head[e].
Aralidka в сообщении #519222 писал(а):
op(x+y) вернёт x, y, т. е. операнды
Завёрнутыми в список вернёт? Если так, то вам надо List @@ e или, что то же самое, Apply[List, e].

Hold bocovp здесь употребил, чтобы выражение не вычислялось. Если попытаться брать вышеуказанные вещи от выражения, оно перед этим вычислится. Возможно, во что-то компактное, а возможно, что и вообще в странное что-нибудь, с другими компонентами. Но если использовать Hold как выше, то вместо Plus для Head[Hold[2+3]] оператора будет возвращаться Hold! Правильное решение есть, щас я его найду, а то забыл.

-- Вс дек 25, 2011 02:39:44 --

А именно: вместо Hold оборачивайте выражение, которое хотите разделить на кусочки, в Unevaluated. (Введена во второй версии.) Эта штука имеет единственную цель: подать свой аргумент во внешнюю функцию невычисленным. Даже если та просит (есть те, которые не всегда просят в некоторых местах, см. http://reference.wolfram.com/mathematica/tutorial/NonStandardEvaluation.html; кстати, там ещё упоминается дельная функция Extract, вдруг пригодится).

-- Вс дек 25, 2011 02:41:56 --

Не забудьте также и о том, что Mathematica не делит свои выражения на операции и что-то ещё, все они предстают для неё одинаковыми в форме голова[параметры]. Собственно, потому функция для выделения из суммы плюса и называется Head.

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

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



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

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


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

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