Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Инстр_Mathem_v8.doc
Скачиваний:
4
Добавлен:
16.11.2019
Размер:
1.91 Mб
Скачать

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.