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

[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]

ставлена функцией FullForm. Следовательно, форматирование выходных данных никак не влияет на ход и результаты вычислений: оно применяется к уже готовому результату.

Существуют шесть стандартных форматов: InputForm, OutputForm, CForm, FortranForm, TeXForm и TextForm - для представления результатов на экране дисплея. Таким образом, выходных форматов пять, и в первой главе мы объединили в одно понятие пять различных форматов, три из которых уже были рассмотрены в предыдущем параграфе. Заметим, что результаты вычислений могут быть представлены в выходной ячейке и во входном формате. Для отдельной ячейки это достигается с помощью Cell Formatted, однако можно установить этот формат и для всей Записной книжки. Строка "stdout" есть имя специального выходного "потока", зарезервированного для дисплея. Этот поток имеет опции, значения которых можно узнать обычным образом.

Optionspstdout"]

{FormatType -> OutputForm, PageWidth -> 61, PageHeight -> 22, TotalWidth -> Infinity, TotalHeight -> Infinity, StringConversion -> $StringConversion)

Переопределив опцию FormatType на InputForm, получим в выходных ячейках результаты, представленные во входном формате.

SetOptionspstdout", FormatType-> InputForm]; Expand[(x-f 2y)-2] x-2-b4*a; *y-}-4* y-2

К глобальному изменению выходного формата приходится прибегать довольно редко. Гораздо чаще возникает потребность в изменении стандартного формата для отдельных выражений или классов выражений. Например, часть или все переменные



какой-то функции удобно писать в виде верхних или нижних индексов (тензоры); переменные, по которым берутся частные производные, также удобно писать в виде индексов и т.д. Подобно OwnValues, DownValues и UpValues, с символами можно ассоциировать Format Values. Эта ассоциация осуществляется функцией Format.

Предположим, что / есть заголовок функции с неопределенным числом аргументов, и, чтобы не загромождать экран, мы хотели бы не печатать аргументов функции /, если их число превосходит два. Тогда мы можем следующим образом отформатировать представление выражения с заголовком / на -экране:

Format[f[x .]] := f/; Length[{x}] > 2 f[x,y,z,w]

% / / FullForm

f[x,y,z,w]

f[x,y] /[x,y]

FormatValues[f]

Literal[f[x..]] :> ; L€ngth[{x}] > 2

Как показывает результат, полученный при вычислении выражения % FullForm, форматирование влияет только на графическое представление выражения на экране, но не влияет на значение вычисленного выражения. Если возникает необходимость отменить введенный формат, то следует прибегнуть к команде FormatValues[f] = .

При форматировании отдельных выражений или классов выражений очень удобны функции StringForm и Sequence-Form. Будучи значением функции Format, выражение



StringFormpstringl"string2..., exprl, ехрг2,...]

где stringl, string2 и т.д. последовательности символов, которые могут включать пробелы, знаки \п перехода ва новую строчку и другие знаки форматирования, а между знаками вставляются вычисленные значения выражений exprl, ехрг2 и т.д.

Format[f [х ]] := StringForm[""[ arguments]", f, Length[{x}]]/; Length[{x}] > 3 f[x,y,z,u,v,w] /[6 arguments]

Если выражение SequenceForm[exprl,expr2,...] является значением функции Format, то в выходной ячейке соответствующее выражение, являющееся аргументом функции Format, будет представлено как конкатенация вычисленных выражений exprl, ехрг2 и т.д.

SequenceForm[a, b --1, с]

al + bc

При проведении математических расчетов применение функции SequenceForm эффективно в сочетании с функциями, обеспечивающими представление части аргументов как верхних или нижних индексов.

{Subscripted[f[х1,х2,хЗ], Subscripted[f[х1,х2, хЗ], 2], Subscripted[[f[xl,x2,x3],{l,2},{3}]]}

{/xl,x2,z3, /il,z2[a;3], fxl,x2}

Как видно из примеров, выражение

Subscripted[f [х1, х2,...], {п1, п2}, { ml, т2}]}

при вычислении записывает аргументы функции f с номерами от п1 до п2 как нижние, а с номерами от ml до т2 - как



[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.0015