Warning: include(/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/wp-cache-base.php): failed to open stream: No such file or directory in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 65

Warning: include(): Failed opening '/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/wp-cache-base.php' for inclusion (include_path='.:/opt/alt/php55/usr/share/pear:/opt/alt/php55/usr/share/php') in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 65

Warning: include_once(/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/ossdl-cdn.php): failed to open stream: No such file or directory in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 82

Warning: include_once(): Failed opening '/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/ossdl-cdn.php' for inclusion (include_path='.:/opt/alt/php55/usr/share/pear:/opt/alt/php55/usr/share/php') in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 82
Работа со списками и массивами | Учебники

Главная > Mathematica 8 > Работа со списками и массивами


Работа со списками и массивами

Работа со списками и массивами
 
Списки относятся к данным множественного типа. Они имеют большое значение при обработке массивов данных и служат основой для создания векторов и матриц. В этом разделе мы познакомимся со свойствами списков, их созданием (генерацией) и использованием.
Списки и их свойства
Часто математические или иные объекты содержат множество данных, которые желательно объединять под общим именем. Например, под объектом с именем М можно подразумевать квадратную матрицу размером 10×10 с общим числом элементов, равным 100. Человека с именем Victor, например, можно характеризовать целым списком разных данных — символьными фамилией, именем и отчеством, целочисленным годом рождения, вещественным ростом, объемом груди и т. д.
Для объединения данных могут использоваться списки (list). Mathematica имеет обширные возможности работы с объектами-списками, содержащими не только однотипные, но и разнотипные элементы. В частности, элементами списков могут быть числа, константы, переменные, выражения и даже сами списки. Списки используются для конструирования более частных типов данных — массивов, матриц и векторов [87].
На языке данной системы список — это совокупность произвольных данных, указанных в фигурных скобках, например: {1, 4, 2, 7, 9} или {а, Ь, с, d, e, sin[x], ln[y], "string"}
Возможно задание списков в списке, например, так:
{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
Такой список представляет матрицу
1  2  3
4  5  6
7  8  9
Однако, чтобы вывести список в такой матричной форме, надо использовать после списка выражение //MatrixForm.
На рис. 3.7 показан еще один способ задания списка или матрицы — с помощью функции List:

  • List [a, b, с,…] — создает список {а, b,, с,…};
  • List [ {а,b, с,…}, {d,e, f,…}, {i, k, 1,…} ] — создает список — матрицу { {a,b, с,…}, {d,e, f,…}, {i, k, 1,…} }.

Списки можно составлять, непосредственно задавая объекты в соответствии с описанным синтаксисом. Однако можно и генерировать некоторые виды списков, таких как таблицы. Списки могут быть объектами присваивания переменным, например
V:={1, 2, 3, 4, 5}
Списки характеризуются размером, который представляет собой произведение числа элементов списков по каждому направлению (размерности). Например, одномерный список является вектором и характеризуется числом элементов по единственному направлению. При этом вектор может быть вектором-строкой или вектором-столбцом. Двумерный список представляет матрицу, имеющую m строк и n столбцов. Ее размер равен mxn. Если m=n, то матрица называется квадратной. Трехмерный список можно представить в виде параллелепипеда, содержащего mxnxp элементов. Списки большей размерности трудно наглядно представить, но они вполне возможны. Напомним, что имена векторов и матриц в данной книге обозначены жирными символами, например, V для вектора и М для матрицы.
Генерация списков
Для генерации списков с элементами, являющимися вещественными и целыми числами или даже целыми выражениями, часто используется функция Table, создающая таблицу-список:

  • Table [expr, {imax} ] — генерирует список, содержащий imax экземпляров выражения ехрг;
  • Table [expr, {i, imax} ] — генерирует список значений ехрг при 1, изменяющемся от 1 до imax;
  • Table [expr, {i, imin, imax}] — генерирует список значений ехрг при i, изменяющемся от imin до imax;
  • Table [expr, {i, imin, imax, di} ] — использует шаг приращения i, равный di;
  • Table[expr, {i, imin, imax}, {j, jmin, jmax},…] —возвращает вложенный список. Самым внешним является список по переменной i.

Ниже приводятся примеры использования функции Table (первая строка каждого примера — ввод, следующая — вывод).

Пример

Комментарий

  Table[i*j,{i,l,3},{j,l,3}]
{{1, 2, 3), [2, 4, 6}, {3, 6, 9}}

 Генерация матрицы размером

Table[N[Exp[i]], {1,0, 2,0.5}]
{1., 1.64872, 2.71828, 4.48169, 7.38906}

Генерация пяти значений Е ^ 1 численном виде

Table[Exp[i],{i,l,5}]
{е, е 2 , е 3 , е 4 , е 5 }

Генерация пяти значений Е ^ i (i=l, 2, 3,4 и 5)

Table[Exp[i],{5}]                        {е i , е i , е i , е i , е i }

Генерация пяти значений Е ^i

Применяется также функция Range, которая предназначена для создания так называемых числовых списков, значения которых равномерно распределены в некотором заданном диапазоне:

  • Range [imax] — генерирует список числовых элементов {1, 2, …, imax};
  • Range [imin, imax] — генерирует список числовых элементов {imin, …,
  • Range [imin, imax, di] — генерирует список числовых элементов от imin до imax с шагом di.

Примеры использования функции Range.

Пример

Комментарий

Range [5]
{1, 2, 3, 4, 5}

Генерация пяти целых чисел

Range[0,2,0.5]
{0, 0.5, 1.,1.5, 2.}

Генерация чисел пяти вещественных

 
Выделение элементов списков
Для выделения элементов списка list используются двойные квадратные скобки:

  • list [ [i] ] — выделяет i-й элемент списка;
  • list [ [ { i, j , —.}]] — выделяет i-й, j-й и т. д. элементы списка.

Ниже приведены примеры выделения элементов списков.

Пример

Комментарий

11:={1,2,3,4,5)

Задание исходного списка 11

11[[3]]

Выделение третьего элемента

3

11[[{1,2,5}]]

Выделение первого, второго и пятого элементов

(1, 2, 5}

12={{1,2,3},{4,5,6}}

Задание сдвоенного (двумерного) списка

{{1, 2, 3}, {4, 5, 6}}

TableForm[12]

Вывод сдвоенного списка в табличной форме

1 2 3

4 5 6

L2[[2,3]]

Выделение элемента сдвоенного списка

6

Для выделения заданного z’-ro элемента списка list используется также функция Part [list, i]. При i>0 отсчет номеров элементов идет с начала списка, а при i<0 — с его конца. Это правило поясняют следующие примеры:
L:={l,2,3,a,b,c}
{Part[L,2],Part[L,5],Part[L,6]}
{2, b, с}
{Part[L,-2],Part[L,-5],Part[L,2]}
{b, 2, 2}
Функция Part может использоваться для выбора заданного элемента выражения из списка. В этом случае вместо i надо указать три числа — номер выражения как элемента списка, уровень выражения и порядковый номер извлекаемого из
выражения объекта. Показанные на рис. 3.8 примеры иллюстрируют работу со списком, последним (четвертым) элементом которого является математическое выражение.
Обратите внимание на то, что в последнем примере неверно задан уровень выражения — использованное выражение имеет только один (первый) уровень. Поэтому задание второго уровня вызывает появление сообщения об ошибке.
Функция Select используется для выделения элементов списка, удовлетворяющих заданному критерию:

  • Select [list, crit] — выбирает все элементы ei списка list, для которых функция критерия crit [ei] имеет значение True;
  • Select [list, crit, n] — выбирает первые п элементов, для которых critfei] есть True.

Ниже представлены примеры применения этой функции:
Select[{1,а,2,b,3,c},NumberQ]
{1, 2, 3}
Select[{l,a,2,b,3,c),NumberQ,2]
{1, 2}
Select[{l,a,2,b,3,c},PrimeQ]
{2, 3}

Статьи по теме

Комментарии запрещены.