Говорухин В., Цибулин Б. Компьютер в математическом исследовании (1185927), страница 23
Текст из файла (страница 23)
1И1, 014, ОРТ) Здесь РОЕ определяет линейное или нелинейное уравнение относительно функции, зависящей от и переменных, начальные условия 1И! даются списком из и+1 элемен- та и таким образом специфицируют кривую в пространстве размерности и+1, пара- метр Р1А задает диапазоны для выводимых переменных. При помощи параметра ОРТ формулируются дополнительные параметры. Для вычисления решения (гнперповерхностн, проходящей через кривую, опреде- ленную параметром 1И1) используется метод характеристик, и система обыкно- венных дифференциальных уравнений интегрируется по умолчанию методом рун- ге-Ку)ты четвертого порядка (с1азз1са1(гС41).
Для решения задачи можно определить другой метод (см. описание методов в разделе, посвященном команде ОВ01 че), од- нако зто может замедлить процесс получения решения. Уравнения в частных производных 123 ное число, ИЕТ вЂ” имя метода численного решения задачи Коши, СО[ — цвет. Помимо перечисленных можно также использовать ряд параметров команд р! 0[36 и 6501 че. Перед вставкой параметра полезно посмотреть примеры из справки Мар!е или даже скопировать подходящий пример, чтобы переделать его, а не вводить команду целиком. Рассмотрим применение команды РОЕО10[ для изображения ударной волны — решения нелинейного волнового уравнения (уравнения Бюргерса): > рбе:-бттт(о(х, н) Л)+о(хд)*61 тт(о(хд),х); !и!: -[з, О, .
5н. 5*а!и( з ) ); 61 а: -0 .. 4*Р1; рбе != ~ — о(х, т) ~+ о(х, т) ~ — о(х, г) ~ = [ а( ' ~ [ ах (и(:= [а,0,.5+.5 яи(х)] сда;= О .. 4 и > РОЕтоо1а[РОЕР101)(рбе,х-бта Л-О..З.!и!.а-б)а,ахея-тгаие, зту1е-п)ббеп.ог!епта(1оп-[-70.15),со1ог-в)ась.повзтерз-)2): н(х,в )г ГЛАВА Алгебра в Кар!е После описания возможностей пакета Мар!е для решения задач математического анализа и решения уравнений естественно перейти к рассмотрению другого классического математического курса — алгебры.
Мы не ставим своей целью рассказать здесь обо всех имеющихся в Мар1е командах алгебры, а представим довольно подробный обзор основных и наиболее часто применяемых с нашей точки зрения. Основное внимание в этой главе будет уделено описанию команд линейной алгебры, однако в Мар!е существует возможность проведения выкладок и в операторном виде. Можно задавать свойства операторов и операции с ними, кроме того, есть пакет Гепэог для тензорных вычислений, пакет теории групп дгоир и пакет Оге а!деЬга, реализующий основные конструкции алгебры линейных операторов. Линейная алгебра Небольшая часть команд для решения задач линейной алгебры содержится в стандартной библиотеке и пакете этидепг, большая же часть находится в пакетах Ипа!д и ПпеагА!деЬга.
В состав предыдущих версий Мар1е входил только пакет йоа!д, который состоит более чем из сотни команд, реализующих основные операции линейной алгебры. Несмотря на эффективность реализованных в нем алгоритмов, этот пакет обладает некоторыми недостатками: для выполнения матричных операций нужно использовать или команду еча1в, или специальные команды, а самое главное — ограниченные возможности работы с числовыми матрицами большого порядка. В пакете ПпеагА!деЬга эти недостатки устранены и, кроме того, добавлены команды, основанные на высокоэффективных алгоритмах компании ХАЮ (Хпшег!са! А!йойгЬптз бгопр).
При реализации пакета ЫпеагА!деЬга использовались новые возможности языка Мар!е — модули (см. главу 7 «Программирование в Мар1еэ). Возможности пакетов во многом перекрываются, хотя можно сказать, что пакет йпа1д удобен для проведения выкладок линейной алгебры в символьном виде, а ПпеагА!деЬга — для вычислений. Однако пкаждом из пакетов существуют возможности, Линейная алгебра 125 не имеющие аналогов в другом пакете. В качестве демонстрационных примеров в этой главе используются упражнения из задачников Фаддеева и Соминского [691, Моденова и Пархоменко [64].
Напомним, что команды линейной алгебры становятся доступными после подключения пакетов Ива[9 или ЫпеагА(деЬга соответственно командами Х1хл(11ла19) и н(ЬЬ((1леагА19евга) Существуют и короткие способы вызова любой команды савв с указанием имени пакета: 11ла19[сона] н Ь!пеагА19еЬга[соеи] Кроме того, к команде сопгя из пакета Ыпеа(А(деЬга можно обращаться как к элементу модуля: Ы леагА19еЬга;-сопл В Мар]е реализованы практически все операции линейной алгебры. Ниже приводится описание Мар[е-команд для болыпой части возможных операций.
Более подробную информацию о командах пакетов Ива! д и ПпеагА[деЬга можно получить, обратившись к справке:?1тпа19 и? [(пеагА) деЬга. Матрицы и векторы Основными объектами команд линейной алгебры являются матрицы и векторы. Пакеты Ипа[д и ПпеагА(деЬга оперируют с объектами различных типов, то есть представление матриц и векторов у этих пакетов различны. В этом разделе мы сначала опишем, как определяются матрицы и векторы в пакете Ипа(д, а затем— в ЫпеагА(деЬга.
Вектором в Ипа[д считается одномерный массив, который можно определить при помощи описателя аггау(1. ль [ча11, аа12..., ] ), где и — размерность вектора, а аа11, ча12,... — значения элементов. Другой способ описания вектора использует команду аес[ог из пакета Ила[9: иес(ог (л,[аа1 1,ча12,...]) Здесь и — размерность вектора, а ча1), ча12,...
— значения элементов, причем если опустить параметр размерности, то размерность вектора определяется числом его элементов. Существует также другой вариант атого описателя: чесЬог(п, т); здесь [ — функция от индекса, используемая для генерации вектора.
В пакете Ипа(д матрицей считается двумерный массив, у которого индексы изменяются от единицы, так что, например, переменная, описанная как аггау(0 .. 3, 1 .. 4), матрицей не является. В этом пакете можно использовать два способа задания матриц: при помощи команд-описателей ватг(х и аггау. Коротко формат описателя аггау уже обсуждался выше, дополнительно отметим, что при помощи этой коман- 126 Глава 5.
Алгебра в Мар(е аатг!х (п.а,[уа)1.уа)2,...1) здесь и — число строк, я — число столбцов матрицы, а уа)1, уа)2, ... — значения элементов матрицы. Синонимом данной команды является описание вида: аггау(1..п,1. л. [уа)1.ча)2....1) Вместе с тем существуют и другие формы описателя п)аСг ! х, например яаСг( х(п (и, Г), здесь à — функция от двух целых переменных (индексов матрицы), с помощью которой присваиваются значения элементам матрицы. Значения элементов матриц и векторов можно задавать как при описании, так и в ходе работы при помощи оператора присваивания, при этом часть элементов массива (матрицы, вектора) можно не определять. В последнем случае Мар[е за- полнит вакансии переменными по умолчанию. Напомним, что для просмотра со- держимого массивов нужно использовать команду еуа) или ор.
При иллюстрации действия команд в этой главе мы будем считать, что результаты ранее приводимых примеров сохраняются. Приведем несколько примеров задания матриц и векторов: > А:ппатгзх(4.3,[[адьо).П П.2 31,[х.у,э)1); а Ь с А,, А э Ахз 1 2 3 х у Элементы второй строки не были определены, и Мар!е заполнил их переменными по умолчанию.
> (оп!-(1,1)->х э/у"3: В:-аатг)х(2,3.эип): х э хэ У х У хз У „з У > и:-аггау(1..3): ч:-вес(ог([а.е,с)) ! и пэ впау(1 .. 3, [ ] ) э:=[а,Ь,с) > Г:-вггау(1..3.1..3.апсэзупветг)с) ! еуа)(Г) О Р! з 7! з !э эз -У () хз аэ ды можно задавать матрицы специального вида.
Параметры зупвеСг(с и апС( зуппеСг( с указываются для определения симметричных и кососимметричных матриц, а для определения единичных и диагональных матриц используются соответственно параметры (((епС) Су и (((а9опа!. Команда-описателыпаСг(х из пакета Ила[у имеет вид: Линейная алгебра 127 > г[1,<1:-а: ор(Е) 0 а 7ха -а 0 7 ' ха В последнем примере знак вопроса означает неопределенность элементов матрицы. В пакете Впа(д существуют также команды, позволяющие формировать матрицы специального вида. Так, команда Ь11Ьег1( и, ехрг) генерирует гильбертову матрицу размерности п*п для выражения ехрг. Для задания блочной матрицы используется команда Ь)ос1(аагг(х, случайная матрица задается командой гап((а(а[г! х.