30. Mathematica. Изменение структуры списка
30. Mathematica. Изменение структуры списка С помощью встроенных функций можно изменить структуру списка: создать в списке дополнительный уровень или, наоборот, уменьшить уровень вложенности списка. Это достигается при помощи функций Partition и Flatten соответственно. Функция Partition [list, п] разбивает список на подсписки длины п. Если число элементов не кратно п, то оставшиеся k < п элементов удаляется из списка. Использование функции с тремя аргументами Partition [list, n, d] разбивает список на подсписки длины п с отступом d от начала списка. Первый элемент k-того подсписка имеет номер (k-l)d + 1 в исходном списке и так далее. Таким образом, при d < п списки перекрываются, при d > п - элементы (п+1),... , d не включаются.
Partition [Range [20], 4, 6] {{1, 2, 3, 4}, {7, 8, 9, 10}, {13, 14, 15, 16}} Partition[Range[20], 6, 4] {{1, 2, 3, 4, 5, б}, {5, б, 7, 8, 9, 10}, {9, 10, 11, 12, 13, 14}, {13, 14, 15, 16, 17, 18}}
Функция Flatten [list, п] уменьшает количество уровней в списке. Она убирает головы List в списках от первого до n-го уровня включительно.
Flatten[{l, {2, {3, 4, {5, 6}}}, {7, 8}}, 2] {1, 2, 3, 4, {5, 6}, 7, 8}
Если указан третий аргумент Flatten [list, n, head], из всех подвыражений указанных уровней выбираются только выражения с головой head. Функция Flatten At [list, positions] поднимает на первый уровень выражения, стоящие на указанных позициях positions. FlattenAt[{l, {2, {3, 4, {5, 6}}}, {7, 8}}, 3] {1, {2, {3, 4, {5, 6}}}, 7, 8}
31. Mathematica. Функции Inner и Outer работы со списками Функция Inner выполняет операцию так называемого обобщенного скалярного произведения. Чтобы понять принцип работы этой функции, рассмотрим подробнее операцию скалярного умножения векторов. При вычислении скалярного произведения векторов используются две операции - умножение соответствующих координат векторов и суммирование полученных произведений. Эти действия можно описать при помощи следующей конструкции
Plus @@ MapThread [Times, {listl, list2}] Функция Inner обобщает конструкцию. Вместо операций сложения и умножения можно указывать другие функции gfunction @@ MapThread [ffunction, {listb list2}] Функция f function должна иметь два аргумента, количество аргументов функции gfunction определяет длина списков listi, list2. Общий вид функции Inner [ffunction, expression!, expression, gfunction] Она формирует список - результат действия функции ffunction на соответствующие подвыражения первого уровня выражений expression^ expression, и затем меняет голову List на голову gfunction. Если последний аргумент не задан, по умолчанию головой результата является Plus. Выражения expression^ expression не обязательно должны быть списками, но головы выражений, а также количество их подвыражений первого уровня должны совпадать. Функция Outer [function, listi, list2, head] применяет функцию function ко всем элементам прямого (декартова) произведения списков и возвращает выражение с головой head. Если четвертый аргумент не указан, вычисленное выражение - список. Outer[f, {а, Ь}, {х, у, z}] {{f [а, х], f[a, у], f [a, z]}, {f [b, x], f [b, y], f [b, z]}} 32. Mathematica. Функции семейства Nest и Fold 33. Mathematica. Механизм нижних значений 34. Mathematica. Механизм верхних значений 35. Mathematica. Как определяются глобальные правила преобразований 36. Mathematica. Функции семейства Replace 37. Mathematica. Локальные правила преобразований 38. Mathematica. Укажите не менее девяти атрибутов, которые можно присвоить функции 1. Считывается введенная строковая информация. 2. К введенному тексту применяется функция $PreRead. 3. Выдается синтаксическое сообщение-предупреждение, если это необходимо. 4. В случае наличия синтаксической ошибки применяется функция $SyntaxHandler. Если эта функция возвращает $Failed, обработка выражения прекращается. 5. Формируется объект InString[n], представляющий текстовую форму n-ной входной ячейки. Далее управление передается Ядру:
6. Применяется функция $Рrе, обрабатывающая каждое входное выражение перед его вычислением. 7. Создается объект In[n], представляющий п - ную входную строку в виде выражения. 8. Вычисляется (эволюционирует) выражение. 9. Применяется функция $Post, обрабатывающая выражение после его вычисления. 10. Создается объект Out[n], представляющий вычисленное выражение. Снова попадаем в Блокнот: 11. Применяется функция $PrePrint, обрабатывающая вычисленное выражение перед его помещением в выходную ячейку. 12. Создается объект MessageList[n]. 13. В выходной ячейке появляется выражение, если от него что-нибудь осталось. 14. Счетчик $Line, указывающий номер текущей выходной ячейки, увеличивается на единицу при вычислении одного выражения. 39. Mathematica. Стандартныей порядок вычисления выражения Вычисление выражения в Mathematica основано на использовании правил преобразования. К выражению применяются все возможные правила, которым обучена система. Какие правила применять, система оп- ределяет, просматривая списки правил, ассоциированных с тем или иным символом. Таким образом, процесс вычисления выражения опирается на вычисление символов. Какие существуют возможности пакета при работе с символами? Во-первых, с символами связаны четыре типа правил преобразования глобального характера. А именно, правила преобразований, введенные посредством функций семейства xSetxxx, обязательно заносятся в один из списков • Собственных значений символа Own Values, • Верхних значений символа Up Values, • Нижних значений символа Down Values, • Дальних значений символа Sub Values, которые система просматривает при вычислении выражения. Во-вторых, символы могут снабжаться атрибутами, то есть наделя-яться некоторыми свойствами. Эти свойства учитываются на определенных этапах вычисления выражения. Стандартный порядок вычисления выражения следующий: 1. Атомарные объекты: числа, строки и символы, не имеющие собственных значений, не вычисляются. 2. Первой вычисляется голова выражения, затем - каждое подвыражение, слева направо. Вообще говоря, каждое не атомарное подвыражение является выражением, поэтому рекурсивно происходит вычисление выражения, стоящего на уровень ниже.
3. Если встречаются символы, имеющие собственные значения Own Values, то им присваивается указанное собственное значение. 4. Если символ-голова наделен свойствами коммутативности, ассоциативности, дистрибутивности относительно списков (имеет атрибуты Orderless, Flat, bistable), то применяются эти свойства. 5. Выполняются правила преобразований, определенные пользователем в текущей Сессии. При этом списки значений символа просматриваются в следующем порядке:
• Список верхних значений символа Up Values, • Список нижних значений символа Down Values, • Список дальних значений символа Sub Values. 6. Применяются встроенные в систему (built-in) определения. 7. Если в процессе вычисления ни одна часть выражения не изменилась, вычисления прекращаются.
Воспользуйтесь поиском по сайту: ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|