Главная  Длительная эволюция 

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [ 69 ] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86]

книжки в другую с помощью копирования и средства Clii>-board. Кроме того, оформив надлежащим образом программу с определениями, их можно без нежелательных последствий подгружать по мере возникновения необходимости с помощью команд Get и Needs, как это обсуждалось в предыдущей главе. Ек:ли выходные ячейки содержат результаты длительных вычислений, то, сделав их с помощью Cell Formatted и Cell Active исполняемыми, можно избавиться от необходимости повторять расчеты, сделанные в предыдущие сессии.

Бели необходимо ввести данные из файлов, созданных вне „Математики", то полезно предварительно составить хотя бы общее впечатление о том, как представлены данные в этих файлах. Это можно сделать с помощью команды

!!filename

где filename - имя файла. После выполнения этой команды на экране будет представлено содержание файла. Допустим, что цифровые данные записаны в файле filel.val в следующем виде:

!!filel.val

5 13 7 2 8 3

27 - 1 10

Если попытаться подгрузить этот файл с помощью команды Get, то мы получим следующий результат:

<< filel.val 17

Дело в том, что команда Get, предназначенная для ввода выражений, трактует каждую строчку рассматриваемого файла как целостное выражение „Математики", записанное во входном формате, которое после его прочтения вычисляется. При



ЭТОМ на экран выводится результат вычисления последнего выражения, воспринятого как Plus[27,Times[-l,10]].

Для чтения данных из файлов следует пользоваться функцией ReadList, первым аргументом которой является строка с именем файла, а остальные аргументы опциональные. Если воспользоваться этой функцией без явного указания опций, то придем к результату

ReadListpfilel.val"]

{455, 48, 17}

Таким образом, и в этом случае каждая строчка файла воспринята как выражение „Математики", но результаты вычисления каждого выражения помещены в список. Опциональные аргументы функции ReadList предназначены для описания типов считываемых данных.

ReadListpfilel.val", Number]

{5,13,7,2,8,3,27,-1,10}

Если данные файла рассматриваются как строки ЗхЗ-матрицы, то нужно воспользоваться опцией RecordLists -> True, которая по умолчанию установлена на False.

ReadListpfilel.val",Number,RecordLists -> True]

{{5,13,7}, {2,8,3}, {27,-1,10}}

Можно добиться того же результата с помощью команды

ReadListpfilel .val", {Number, Number, Number}]

{{5,13,7}, {2,8,3}, {27,-1,10}}

Последний способ позволяет переструктурировать данные. Например, для того чтобы сгруппировать данные в пары, доста точно выполнить команду:



ReadListpfilel.val", {Number, Number}]

{{5,13}, {7,2}, {8,3}, {27,-1}, {10,EndOfFile}}

Однако рассматриваемый способ неприменим, если длина строчек в файле неодинакова.

!!file2.val 1.7 3.14

67 2.3Е-01 6.2225

ReadList["file2.val",Number,RecordLists True] {{1.7,3.14}, {67,0.23,6.2225}}

При этом способе чтения сохранена структура данных в файле. Кроме того, видно, что числовые данные в файле могут быть представлены в так называемой „научной" форме, т.е. с указанием мантиссы и порядка чисел.

Кроме чисел в файле с данными могут находиться и другие объекты, например символы.

!!file3.val

pointl ООО point2 0 0 1 points 110

Данные этого файла могут быть считаны с помощью указания следующих опций в команде ReadList.

data = ReadListpfileS.val", {Word, Number, Number, Ntimber}]

{{pointl,0,0,0}, {point2,0,0,1}, {points, 1,1,0}}

Спецификация типа данных Word предполагает, что при считывании символьные данные отображаются в строки.

Head[data[[l,l]]] String



[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [ 69 ] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86]

0.0011