Говорухин В., Цибулин Б. Компьютер в математическом исследовании (1185927), страница 24
Текст из файла (страница 24)
В пакете [1 пеа(А[деЬга матрицы задаются с помощью команды Магг( х [напомним, что в Мар1е болыпие и маленькие буквы различаются), а векторы — )(есгог. Существует короткий способ задания переменных типа Честог и Ма1г! х при помощи символов >, < и ~. Символы < и > определяют строки, а ! — их разделитель. Пример: > «а,о>(<п,р»; ниа((уре(Г); Г:Л Мыпх Однако такое задание не всегда удобно и не предоставляет возможности управлять структурой объектов.
Полные варианты команд задания векторов и матриц позволяют детально определять различные характеристики объектов, но довольно громоздки, хотя все параметры не являются обязательными. Полный вариант команды Матг! х имеет вид: Ма(г!х(г, с. !и1(. го, ас. ан, а(, оа, !)Г, Г. а) Здесь г — указывает число строк матрицы, а с — число столбцов. В качестве параметра 1п11, который определяет значения элементов матрицы, могут фигурировать массивы, процедуры [аналогично команде а(а(,г1 х пакета 11па10), переменные тица 1! зб и другие конструкции языка Мар[е.
С помощью параметра го можно запрещать изменение элементов матрицы, в этом случае он имеет вид: геа((оп1 у-1 гэе. Параметр зс может применяться только в случае, если в качестве ! п1 Ь фигурирует лист данных, и предназначен для управления заполнением матрицы (асап-гонз— массив данных определяет строки, а зсап-со1эвпз — столбцы матрицы). Для формирования матриц специального вида используются управляющие параметры зП и з~..
Например, для задания кососимметричной матрицы в качестве зп нужно указать з Паре-а от ! зупаеЬг1 с, а если вместо зг поставить это гада=(((адопа1, то будет сформирована диагональная матрица. Управлять способом хранения матрицы в памяти можно при помощи параметра оз, если он имеет вид агбег-Гогггап огбег, то матрица хранится по столбцам, а при аг((ег-С огбег — по строкам. Параметр ((Ь указывает тип числовых данных [ссар1 ех[83 — комплексные, ! МЬедег[п) — целые, п-1, . 8).
Задав параметр г в виде 1111-ча1 эе, можно определить значение всех элементов матрицы величиной ча)эе с типом, заданным параметром (й. И наконец, пара- 428 Глава 5. Алгебра в Мар[е метр а, имеющий вид асгг)Ьигез-11зг, определяет дополнительные характеристи- ки матрицы (подробно об этих характеристиках см. в справке Мар!е). Вектор в пакете [!пеагА[йейга определяется при помощи команды Чессог[с)Ы. )п)а го, ва, ха ОС, Г, а. Г) Здесь [1) указывает ориентацию вектора (гон — вектор-строка, со1иап — вектор- столбец), о — размерность вектора.
Последний параметр г совпадает по содержа- нию с параметром [1), но отличается по написанию: ог)еп[а11оп=пал)е, где в каче- стве пзл)е фигурирует гон или со1ол)п. Назначения других параметров аналогичны одноименным параметрам команды Магг)х. Отметим еще раз то, что все параметры команд Магг1 х и Чесгог не являются обяза- тельными и существуют правила определения свойств матриц и векторов по умол- чанию. Например, если опущено указание числа столбцов, то матрица считается квадратной размерности г на г, В отличие от пакета Ипа[й, где элементы матриц и векторов принимают значение переменных по умолчанию в случае их неопределенности, в пакете [!пеагА[дебга незаданные элементы обнуляются. Если для объектов были определены свойства, а затем проделываются операции, этим свойствам противоречащие, то Мар!е вы- водит сообщение об ошибке.
На экран переменные типа Мз1г)х и ЧесЕог выводятся в виде матриц и векторов только для малых размерностей, а в других случаях вы- водится только информация об объекте. Отметим, что для просмотра переменных этих типов не нужно пользоваться командой ечз1, а достаточно к ним обратиться по имени. Теперь приведем примеры задания матриц и векторов в пакете [!пеагА[деога: > Масг1х[2): Г:'3 > Чесгог[го>1[3.[а.2.31): [а,2,31 > Магг~ х[П1.21.
[3.4И,хсап-со)охпз): '[г > Магг)х[[[1,21,[3,4]),всап-гома): [3 4~ > А1:-МаСГМ х[1, .3,3 ящере впг)х)еевсг1с) . Обращение к элементам матрицы производится указанием индексов в квадрат- ных скобках. При попытке задать значение, противоречащее свойству матрицы, следует сообщение об ошибке: > А1[1.Ц: 1, еггог, асгвмк го евв)вп поп-аего го апывувевсг)с смавопе1 > А)[2,11:-а-с: А1: Лнневнав алгебра 129 К':Ч > Честсг(425) 425 Е!степ( Со!огне Чес(ог ()а(а Туре: апуйеед 8(огазе.
гес(авзе1аг Огнев гопгав огдег Отметим, что в качестве элементов матриц и векторов в пакете ИпеагА1деЬ(а могут указываться переменные любого скалярного типа. Для преобразования матричных и векторных переменных из типов пакета йпа1д в типы, с которыми работает пакет ИпеагА1деЬга, используется командасопчегС с указанием соответствующего типа. Такая необходимость возникает при использовании команд пакета ИпеагА1деЬ(а для работы с переменными, описанными как 3 ггау. Отметим, что команды пакета йпа1д работают без проблем с переменными ЧесСог и МзСг) х, однако результат их работы будет иметь тип з ггау. Приведем пример, в котором используется команда вычисления определителя пакета С]пеагАЬ]еЬга.
При первом обращении Мар1е выводит сообщение об ошибке, а после преобразования типа получается правильный результат: > АА:-аггау(1..3.1..3.П1,2,3].14.5.6].(7.8,0П): ИпеагА)резга(зееегегеапС](АА); еггог, игеагА)9еьга:-сесеоагеапс ехресса 1са 1ас агдлеес. А, со ье ог суре масг1х. ьсс гесе1чес АА > И ееагА)9еьга(оетегехеаеС](соечегС(АА.МаСг1х)); 27 При вычислении определителя объекта типа Ма С г1 х командой пакета Бпа(д ошибки не возникает: > АА:-масг1х(Па.2.3].(4,5.ь],17.8,0]]).1теа)9(сес](АА): -8 а Ь вЂ” 9+ 14 Ь Понятно, что объекты линейной алгебры (матрицы, векторы) могут быть получены и как результат преобразования массивов, списков, таблиц и т.
д. Например, команда сопчегС(1151, чесСог) преобразует переменную типа! ) 5С в вектор пакета йпа1д, адля преобразования наборапеременныхтипа1тзС в матрицу пакетаИпеагА1деЬга используется команда сопчегС((115С], ...]тзСЬ],МзСг(х). В пакете Ипеа(А1деЬга существуют специальные команды считывания (]врог(наСг1х) и записи матриц (ЕхрогСМзСг1 Х) На дисК, кОторые ОннсанЫ В раЗДеле «Команды вводаггВЫ- вода» главы 7 «Программирование в Мар1ем Вывести графическое иэображение структуры матрицы можно при помощи команды евСг] хр1 оС (см.
главу 6 «Графика Мар1е»), Работа со структурой матрицы и вектора Перечислим некоторые команды, позволяющие получать инфррмацию о матричных и векторных переменных, корректировать эти объекты и работать с отдельными строками н столбцами. 130 Глава 5. Алгебра в Мар(е Для выяснения размерностей матрицы М в пакете йпв(д имеются две команды: Гоаб)Е(М) — выводит число строк матрицы М, а со1 бге(М) — число столбцов. Напри- мер, для определенной выше матрицы А получим: > гоэра(А); со1ше(А): 4 Число элементов вектора н пакета 8 па(В можно узнать при помощи команды чесгб(е( в ) . Команды пакета Ыпеа(А1деЬга для определения размерностей имеют вид; 0(ееп- 51оп(М) — размерность матрицы или вектора, йои01 еепз(оп(М) — число строк, Сс1иеп- 0(еепз)сп(М) — число столбцов, Пример: > Впзепиоп(сопхегг(А.Маггах)): 0 еепюоп(зес(ог(345)); 4,3 345 Далее перечислим команды, позволяющие изменять размерности матриц, добавлять или удалять строки и столбцы.
Для того чтобы удалить из матрицы (еагг(х) М строки с номерами от ( до 3, нужно воспользоваться командой бе1со15(м.1, , б ), а для удаления столбцов применяется команда бе1 гснз(М.1 .. 3). Приведем пример удаления второй строки из матрицы А: > С:-бе)гаьз(А.2..2): С:=1 2 3 а: [ а Ь с О а А,з 1 2 3 -а О А' х 4 Аьз ~з,з Для удаления строк и столбцов матрицы типа МаСг(х существуют аналогичные команды Ве!еСейон(А, С, оигорС5) и Ве1 егеСо1 сел(А, С, оогоргз).
Здесь список С определяет номера удаляемых элементов, а онгоргз — необязательные параметры вывода, которые управляют представлением результата (геабоп! у, басагуре и др., см. справку Мар1е). Удалим с помощью этих команд две строки из преобразованной матри- цыС: > Ое1егевах(сопчегС(С.Магг(х),(1.3)); !1 2 3) Расширить матрицу М можно при помощи крманды ехСепб(М е.
и, х); здесь е — число добавляемых строк, и — число добавляемых столбцов, х — значение заполнителя. Для копирования матрицы А в матрицу В начиная с элемента с номером 1,3 используется команда сору1 пСо(А. 8,1. б ). При помощи команды сопсаС(М1, М2) можно получить новую матрицу, являющуюся горизонтальным слиянием двух матриц м1 и м2, имевших одинаковое число строк. Для вертикального слияния матриц А и В используется команда 5СасС(А,В). Например: > 6;-сопсаС(с.г): Линейная аягебра 131 В пакете Ила(д для извлечения (без удаления) из матрицы М строки или столбца с номером ! используются соответственно команды гон(М.
П ) и Со1(М,(). Для формирования подматрицы, включающей элементы столбцов с номерами от 11 до ) 2 и строк с номерами от 31 до 32, предусмотрена команда зоЬ(яа1г)х(М.11..12.31.. 32). Команда зеЬчес1ог(ч,1 .. 3) выделяет вектор с элементами ч(1], ...,ч(3] из вектора ч. Получить минор матрицы М для элемента с индексами 1,3 можно командой !я! пег(М,1, 3). В пакете ПпеагА(деЬга для работы с переменными типа Магг)х и Честог существуют аналоги перечисленных команд: йои, Са1 з!яп, 5иЬМа1г) х, 5иЬ((естог, М пег.