- •Пакет прикладных программ mathematica
- •2. Точные и приближенные вычисления. Численные и аналитические операции
- •3. Рабочий документ и ячейки. Основные команды
- •4. Сеанс работы в системе Математика. Глобальный характер данных
- •5. Правила написания. Основные встроенные функции
- •Примеры выражений
- •Формы обращений к функциям
- •Нескольких аргументов
- •6. Функции комплексного аргумента
- •Логические операторы
- •7. Циклические операции
- •7.1. Цикл For
- •7.2. Цикл While
- •7.3. Цикл Do
- •7.4. Функция If
- •7.5. Логические выражения
- •8. Функции пользователя. Составление программ
- •8.1. Функции пользователя. Описания типов аргументов
- •8.2. Немедленное и задержанное присваивание
- •8.3. Альтернативные определения функций
- •8.4. Составление программ. Глобальные и локальные переменные
- •8.5. Прерывание вычислений
- •9. Списки
- •9.1. Создание списков. Обращение к элементам списков
- •9.2. Преобразование списков
- •9.3. Матричные функции
- •10. Массивы
- •11. Основные типы графиков
- •11.1. Двумерные графики
- •Show[GraphicsRow[{g1, g2,…}], options]
- •11.3. Изображения трехмерных объектов
- •11.4. Анимация
- •12. Функция Manipulate
- •13. Аналитические операции. Интерполяция. Решение уравнений
- •13.1. Аналитические операции
- •13.2. Интерполяция
- •13.3. Решение алгебраических уравнений
- •13.4. Решение дифференциальных уравнений
- •14. Преобразование выражений
- •14.1. Стандартная форма выражений
- •Примеры выражений
- •14.2. Обращение к элементам выражений
- •14.3. Представление выражения в виде дерева
- •14.4. Операции преобразования выражений
- •14.5. Повторное выполнение операций
- •14.6. Анонимные функции
- •14.7. Функциональные операторы Outer и Inner
- •Вопросы для повторения
- •Упражнения
8.5. Прерывание вычислений
Часто возникает необходимость прерывания вычислений. Для этого в пакете Математика можно использовать следующие функции.
Abort[ ] – так же, как и одноименная команда меню, останавливает все вычисления. Команда может быть использована в любом месте программы.
Пример 8.11. Введем функцию, которая вычисляет двоичный логарифм x, если выполнено условие: x>0, и печатает предупреждение об ошибке, если это условие нарушено:
In[ ] := f1[x_] := If[ x>0, Log[ 2., x], Print["Error: x<=0!"]; Abort[ ]]
In[ ] := f1[ 8] Out[ ] = 3.
In[ ] := f1[-8] Out[ ] = Error: x<=0! $Aborted
Break[ ] – обеспечивает экстренный выход из ближайшего охватывающего цикла Do, For или While. (Применение оператора Break[ ] см. в примере 7.2.)
Goto[tag] – передает управление в точку программы, отмеченную меткой Label[tag];. Фрагмент программы с передачей управления может выглядеть следующим образом:
If[ test, Goto[ abc ]];
…
…;
Label[ abc ]; … –
если выполнено условие test, управление передается в точку, помеченную меткой abc.
Пример использования функции Goto имеется в приложении (см. программу перемножения матриц).
9. Списки
9.1. Создание списков. Обращение к элементам списков
Список представляет собой набор каких-либо элементов и может рассматриваться как обобщение понятия массива. В отличие от массива список может включать в себя элементы разных типов. Списки относятся к наиболее гибким и продуктивным объектам Математики.
Наиболее простой способ определить список – дать перечисление его элементов в фигурных скобках. Элементы списка отделяются запятыми. Однако элемент, после которого стоит точка с запятой, не выводится на экран и не включается в список – данный элемент сохраняется в памяти вне списка.
Пример 9.1. Сформируем список разнородных элементов:
In[ ] := L1={f[x_]=x^2; "список", 0.5, a+b, {x,y}} Out[ ] = {список, 0.5, a+b,{x,y}}
Первый из элементов – функция f – отсутствует в списке. Длина списка равна четырем:
In[ ] := Length[L1] Out[ ] = 4
Функция f отсутствует в списке однако сохраняется в памяти:
In[ ] :=f[y] Out[ ] = y2
Обратим внимание, что последний элемент списка L1 сам является списком.
Выделить из списка List элемент с номером n можно с помощью команд:
Part[List,n] или List[[n]].
Отметим, что нумерация элементов списка начинается с единицы.
Новый список, составленный из элементов списка List, можно получить с помощью команд:
Part[List,{n1,n2,..}] или List[[{n1,n2,..}]], –
где n1, n2,.. – номера нужных элементов.
С выделенными элементами можно производить любые допустимые операции
Пример 9.2. Примеры обращения к элементам списка L1:
In[ ] :=L1[[{4, 2}]] – список, включающий четвертый и второй элементы списка L1:
Out[ ] = {{x,y}, 0.5}
In[ ] :=L1[[4, 2]] – обращение ко второму подэлементу четвертого элемента списка L1:
Out[ ] = y .
In[ ] :={L1[[2]], L1[[2]]^2, L1[[2]]*3} – действия со вторым элементом списка L1:
Out[ ] = {0.5, 0.25, 1.5}
В тех случаях, когда значения элементов списка подчиняются какому-либо закону, для создания списка можно воспользоваться одной из стандартных функций пакета Математика.
Range[nmin, nmax, dn] – создание списка чисел N=nmin+dn*i, i=0,1,..,imax, где imax равно целой части числа (nmax-nmin) / dn (отметим, что шаг dn может быть отрицательным).
Table[f, {i, imin, imax, di}] – создание одномерного списка значений функции f.
Значенияimin и di можно не указывать, если эти значения равны единице. Если значения функции не зависят от индекса, то и индекс можно не указывать; в этом случае в фигурных скобках указывается только длина списка. Функция f также может быть списком. Функция Table позволяет создавать также списки аналитических выражений.
Table[f, {i, imin, imax}, {j, jmin, jmax},..] – создание двумерного списка.
Пример 9.3. Построим списки, используя функции Range и Table:
In[ ] := v1=Range[5, -5, -7] Out[ ] = {5, -2}.
In[ ] := v2=Table[Random[Integer, {-9, 9}], {3}]
Out[ ] = {5, 7,-9} – один из возможных ответов.
In[ ] := m1=Table[Abs[i -j]+1, {i, 2}, {j, 2}] Out[ ] = {{1, 2}, {2, 1}}.
Отметим, что списки v1 и v2, по существу, являются векторами, а список m1 является матрицей. Чтобы увидеть эти списки в виде векторов и матриц воспользуемся командой MatrixForm:
In[ ] := {v2//MatrixForm, {v2}//MatrixForm, m1//MatrixForm}
Out[ ] =
Заметим, что команда MatrixForm представляет вектор в виде столбца. Чтобы превратить список в вектор - строку, достаточно заключить его в дополнительные скобки.
Пример 9.4. Команда In[ ] := { Table[i*j, {i, 8}, {j, 8}]//MatrixForm,
"Рис. 9.1. Таблица умножения" }//TableForm
создает список, включающий фрагмент таблицы умножения и подпись под таблицей. Таблица умножения cоздается с помощью функции Table и выводится на экран в виде матрицы. Функция TableForm размещает в столбик элементы списка. Результат виден на рис. 9.1.