Говорухин В., Цибулин Б. Компьютер в математическом исследовании (1185927), страница 42
Текст из файла (страница 42)
веу)6 ротпт,вуЧОЬО) с!ге)е.вухо)5)аа 20, со1ог Ыасй.1ерепб ["исходнне данные"]): 91осв[бтвр!ау](р)с1.рчс2): 220 Глава 8. Математические библиотеки Мвр(е лО О 2 3 Секдоли сппайн полипом О О О О О О исходныеденные Ортогональные полиномы Ортогональные полиномы, играющие важную роль в математике, представлены в Мар! е в виде набора команд стандартной библиотеки, а также собранием процедур пакета огсйоро(у. Ниже, при перечислении команд, первыми в табл. 8.6 даны команды стандартной библиотеки, а вторыми — соответствующие команды пакета оггпоро1у.
В таблице использованы следующие обозначения: целое число и определяет порядковый номер полинома, з — параметр, х — переменную. Таблица 8.6. Команды задания ортогональных полиномов Имя команды пакета огсйоро!у Имя команды стандартной библиотеки Назначение 6(п.а,х) СедепЬаиегС(п,а.х) Неги(сеН(п.х) Садиеггес(п,х) Садиеггес (п.в,х) Оксо)ПР(п.а,Ь,х) Сьеьукпеут(п. х) СьеЬувпеуйп,х) Более детальное описание каждого полинома из пакета оггпоро1у может быть по- лучено при помощи команды справки Роггпоро)уЦеггег), где 1еггег означает на- чальную букву соответствующего полинома. Н(п,х) (Лп.х) С(п.а,х) Р(п,х) Р(п.а,Ь,х) Т(п,х) Ь(п,х) Полипом Гегенбауэрв (семейство ультрвсферических полиномов) Многочлен Зрмита Многочлен Лагеррв Обобщенный многочлен Лагерра Многочлен Лежандра Многочлен Якоби Обобщенный многочлен Чебышева Многочлен Чебышева второго рода Команды работы с электронными таблицами 221 Рассмотрим простой пример.
Подключим пакет, выведем полиномы Лежандра второго и пятого порядка, а затем убедимся в их ортогональности на интервале (-1,Ц с весовой функцией (1-хт): > гестас(: нцл(огтиоро)у); (с, и, ц(>, г, ()] > Р(2.х):Р(5.х); г — х —— 2 2 53 35 15 — х1 — — хт + — х 8 4 8 > опт(Р(2,х)*Р(5,х)*ацгг(1-х 2).х-.1.,1): 0 Двумя разными способами определим полипом Гегенбауэра второго порядка и вы- числим его значение в точке х=1: > 01;-Я2.1.х).
02:-6ечепЬаиегс(2.0,1.0,х); 81т4х — 1 82 >и ОехепЬаиетС(2.0, 1.0, х) > эиоэ(х-1.01), та)ие(аиоэ(х-1.0,02)): 3 Команды работы с электронными таблицами При описании интерфейса Мар!е уже упоминались электронные таблицы Мар1е и кратко описывалась работа с ними в интерактивном режиме.
С этими таблицами можно работать и с помощью команд пакета 5ргеас(. Продемонстрируем на примере работу представительного множества его команд. Напомним, что адрес (ссылка на ячейку таблицы) ячейки таблицы состоит из буквы, определяющей столбец таблицы, и цифры, задающей номер строки. Подключим пакет 5ртеа(1 и получим список всех его команд: > нэти(5ргеаО): [СоруБе(есиоп, СгеагеБргеат(алеет, Еих(иагеСипепгБе(есдоп, Епт(ишеБргеайхлеет, СегСе((рости(а, СегСе11)га(ие, Сеглоппи1аеМшпх, СееМахСо!е, СегМах((овх, ОтБе1есеып, СеЯа!иеаМшпх, 1пхеггМшг(тЬиоБе1еспоп . 1хБЫе, БегСе11гоппи(а, БетМаптх, БегБе(еспоп ) Создадим электронную таблицу с именем ТЬ): > Сгеате5ргеаеапеес(тщ ): В результате появится таблица с пустыми ячейками, для краткости мы не приводим соответствующий рисунок.
Пакет тенаорного исчисаенин Гепаог 223 Определим матрицу М и присвоим значения ее элементов ячейкам таблицы: > М:-Маггах(((0,1.21. (1.2.31. (2.3.4П): > 5етнагг1х(ТЫ .М): В ячейке А4 определим формулу для вычисления суммы квадратов первых трех ячеек столбца А и определим формулы для первых трех ячеек столбца 0: > 5агсе)1Еогпв1а(ТЫ . А4, а из("-А( (1""2,1-1 .. 3) ); > тес(5егсе11еогпв1а(ты,ОП1.1пг(х"-Вйвх))д-1..3). После выполнения перечисленных команд таблица примет вид, изображенный на рис.
8.1. Серая штриховка ячеек информирует о том, что заданные для них действия еще не были выполнены. Выделим элементы столбца А и дадим команду выполнить операции, заданные в выделенных ячейках. Результат выполнения опустим: > 5е15е1есыоп(ТЫ, 1, 1, 4, 1): > еча1 чагесаггап(5е1 асы оп(ты ): Теперь выполним действия во всей таблице. Результат дан на рис.
8.2: > Еча1иате5ргеасапеет(ТЫ ); В завершение отметим, что имеются воэможности взаимодействия Мар)е с электронными таблицами Мюгоаой Ехсе1. Краткое описание таких возможностей дано в следующей главе. Пакет тензорного исчисления 1епяог Пакет сепзог предназначен для проведения тензорных операций и решения задач общей теории относительности (ОТО). Для представления данных имеется тип Сепзог Суре, позволяющий работать с коварнантными и контравариантными компонентами тензоров.
Фактически это таблица с двумя полями — для запоминания компонент и описания типа величины, Поле компонент дается массивом, размерность которого отвечает рангу тензора, а индексы изменяются в диапазоне от 1 до размерности рассматриваемого пространства. Для представления типа компонент используется список, в котором положительная единица обозначает контравариантную компоненту, а отрицательная — ковариантную. Для проверки объекта на принадлежность тензорному типу используется команда Еепзог гуре, результатом выполнения которой будет булевская константа (Сгсе или ТВ15е). Тензору отвечают таблица коэффициентов вращений и таблица компонент кривизны. Для вычисления вращений применяется команда прз р1 п.
Для индексации используются греческие буквы. Компоненты кривизны вычисляются по команде прссгче и пометцаются в таблицу с тремя полями: компоненты Риччи обозначаются буквой Ф (Р))1) и содержатся в массиве размерности (О, . 2) Г(О .. 2); компоненты Вейля Чг (251) находятся в массиве (О ..4); скаляр Риччи обозначен буквой й. Для упрощения тензорных выражений имеется команда 51вр. Приведем перечень команд с краткими пояснениями в табл.
8.7. 224 Глава 8. математические библиотеки Иар(е Таблица 8.7. Команды пакета тепзог Имя Назначение Задание символа Кристоффеля первого рода Задание символа Кристоффеля второго рода Задание тензора Эйнштейна Вывод и описание ненулевых компонент всех тензоров ОТО Вывод ненулевых компонент тенэора ОТО Вычисление тензора кривизны Якобиан преобразования координат Вычисление компонент(коэффициентов) для уравнения Киплинга Вычисление псевдотенэора Леви-Чивнта Вычисление производной Лн от тензора по ковариантному векторному полю Задание тензора Риччи Задание скаляра Риччи Задание тензора Римана Задание тензора кривизны Римана Задание тензора Вейля Слг1зтотте11 Сьг!зтотте12 Е1пзте1п Оззр1ау а11ОЙ О1зр1ауОЙ теппогОЙ Оасом ап К111ппд ецпз Сел Сзтпта 11е гдтт Й1се! кпсс(зса)аг Й( емапп Й!емаппг неу) Таблица 8.8.
Команды, реализующие операции с тензорами Имя Назначение Применение оперьции к элементам тензора Получение антисимметричного тензора по заданным индексам Преобразование базиса тензора Сравнение двух тензорных объектов Свертка тензора по одной или нескольким парам индексов Создание тензорного объекта Вычисление якобиана и обратного к нему преобразования Вычисление частной производной тензора по заданной координате Внутреннее и внешнее тензорное произведение Симметризация тензора по заданным индексам Преобразование тенэора, задвинье соответствующим якобианом аст аптззупшетг1зе сцапде Ьазпз сомраге соя!где! сгеате Оасо(П ап раг!!а1 сд тт ргоц зумпет г! зе тгапзтооп Рассмотрим короткий пример: > н11Л(тепзог): > Т:-сгеате(11.-13. аггау(ЕСи,х.О),(у да О),ЕО.у"2.х"у"н)1)); ю х О т:= (вые(Гстхпрм = у х О (пттсх сваг = Г), -! Н) О у лузе Далее рассмотрим ряд операций с тензорами, причем перечислено только нх пред- ставительное подмножество, а полный список нужно смотреть в справке Мар!е.
Теория чисел 225 > 0:-сопггасс(Т,[1.2)): ((: (аые([сотрм = » + а+ау», (т!ах сьаг [ Д) > рагС(а) й (1(0.[х.у.а)): (аые([сотргз [ут,хт,!1,!т!ех сьог=[-1Ц) > асыаоЬа,[х 1).$): (аые([сотрга = [у»', в, 11, тг)ах сЛаг = [-!Д) Теория чисел Для эффективной работы с задачами теории чисел в Мар[е имеется ряд команд стандартной библиотеки, а также пакеты пэвФеогу, баьаз[пС и раб(с. Входными параметрами и результатами действия команд этих пакетов выступают числа — целые, рациональные, цепные дроби, гауссовы целые (комплексные целые), р-адические, простые, а также несколько известных иррациональных чисел. Для выделения числителя и знаменателя рациональной дроби можно использовать команды стандартной библиотеки повег и бепов.
Если целое число (знаменатель, числитель) не помещается в строке вывода, то оно переносится на следующую строку, а в качестве знака переноса ставится обратный слэш (1). Мар[е предоставляет возможность работы с целыми числами, состоящими из более чем пятисот тысяч цифр, но при операциях с такими числами на персональном компьютере, скорее всего, возникнут проблемы с машинным временем и памятью. Приведем иллюстрации некоторых возможностей пакетов пап[[)ео(у, баиэа[пт и райс.
Для решения полиномиальных уравнений с рациональными коэффициентами можно использовать команду стгасро! из библиотеки пов[Ьеогу. В этом случае ответ выводится при помощи цепных дробей; команда стгас служит для преобразования обычной дроби в цепную и наоборот. >»(ГЬ(ваагпеогу): Иагп)пд, 1Ье рго1ес1еб паве огбег Ьаа Ьееп гебе[(пеб апб ипргосессеб > а:-с(гасро!(68*к"4+364*к 3-281*х"2>91*х+66.20): а:= [-1, 21, [О, 21, [О, 1, 1, 1.
51, [-61 > Ь:-с(гас(а[3)); с[гас(Ы; 11 Ь:»в 17 1 !+ 1+ 1+— 5 Для демонстрации возможностей библиотеки пцп)т[)ергу при поиске простых чисел воспользуемся следующим тривиальным примером — семизначное число проверяется иа простоту и ищется следующее за ним простое число: > б:-7664321: (эргЧве(б); пехсрг(ве(б): утбае 7654337 226 Глава 8. Иатеиатические библиотеки Иар1е Поиск ближайшего гауссова числа и проверку на простоту суммы этого числа и мнимой добавки иллюстрирует следующий пример: > и(ЬЛ<6аоае1пт)'. йагп1пд, тпе пале 6!дсс Лат Ьееп ге)ет)пес' > д:-6[пеагеат(едг((3+1*5)); 6!рг)ее(д+1"4); 8:=2+! ггае Для р-адических чисел имеется собственное довольно специфическое представление, Для преобразования з данные других типов нужно использовать команду ор, которая выводит внутреннюю структуру числа и предоставляет доступ к его операндам.
Приведем пример использования р-адических чисел для действий с экспонентой н логарифмом; > и(ЬЛ(рао)с): 0(д)(ар;-10: еча)р(ехр(5).5); )одр (Ф); с)!Х)гер га 10 1+5+35т+35'+45х+5>+25е+45'+35'+0(5е) 5+ 0(5п) Статистика Статистика имеет свою, развитую систему пакетов для решения разнообразных задач, Для пользователей, которые выбралн Мар!е и нуждаются в средствах статистики, имеется набор команд, позволяющих легко переходить от одной математической специализации к другой, не расходуя лишнего времени на трансформацию данных и освоение различных программных средств. Пакет агата предоставляет хороший набор команд для анализа данных с вычислением различных средних и квантилей, графического представления данных в виде гистограмм и графиков рассеяния, а также для обработки данных.