Матросов А.В. Maple 6. Решение задач высшей математики и механики (1185909), страница 32
Текст из файла (страница 32)
Может быль одним из следую- щих объектов Мар(е: процедурой, входными параметрами которой является пара целых по- ложительных чисел, определяющих индексы элемента, а возвращае- мым значением величина этого элемента, например, (т,)(->1*); алгебраическим выражением, которое вычисляется как процедура с двумя параметрами, возвращающая значение элемента; таблицей, элементы которой с неотрицательными индексами пред- ставляют значения соответствующих элементов матрицы; множеством уравнений вида (1,1(=значение, в которых неотрица- тельные индексы представляют индексы соответствующего элемента матрицы; массивом на основе таблицы или г-таблицы, созданным, соответствен- но, либо командой еттеу(ц либо командой гттеу(ц у которого ин- дексы начинаются с 1; матрицей на основе г-таблицы, т.
е. матрицей, созданной конструкто- ромиатт1х(П списком, элементы которого интерпретируются как значения первой строки матрицы, или списком, элементами которого являются списки, интерпретируемые как последовательные отроки матрицы глгт Задается в виде таас(оп1у или теег(ол1у тхое и определяет, что зна- чения элементов матрицы, определенные при ее создании, не могут быть изменены в дальнейшем Основные типы данных, с которыми работают команды пакета 11пеетлгдеьге, являются скаляры, представляющие как числа, так и алгебраические выражения, а также матрицы и векторы, определяемые на базе нового типа данных г-таблицы. (Мы не будем рассматривать здесь этот структурный тип данных, а отошлем интересующегося читателя к Справке Мар)е.) Матрицы и векторы создаются с помощью соответствующих конструкторов.
КОНСтруКтОрОМ МатрИц яВЛяЕтея КОМаида Меттьх (( (ОбяэатЕЛЬНО С ЗаГЛаВНОй буквы), синтаксис которой имеет следующий вид: нет тех (т, с, г л11, то, эс, э(1, эс, с, с(т, т, а(; Часть!. Основы Мар)е Таблица 3.2 (окончание) 170 Параметр Описание Уравнение вида аеас=имя или возя=список, определяющее структуру и/или порядок данных при интерпретации начальных значений, зада- ваемых параметром 1п1с Уравнение вида з)заре=имя или з)заре=список, определяющее одну или более встроенных или пользовательских индексных функций, за- дающих расположение в памяти элементов матрицы Уравнение вида зсогаое=имя, где зозя является одним из допустимых режимов памяти, определяя тем самым требования памяти для раз- мещения элементов матрицы Уравнение вида охг)ег=и>зя, где яьзя может быть либо с осаег, либо гоге гап огсег, задавая хранение матрицы в памяти, соответственно, по строкам или столбцам Уравнение вида г)асатуре=ныл, где имя может быть любым типом Мар!е, определяющим тип данных, хранимых в матрице Уравнение вида 1111=значение, определяющее значение, присваи- ваемое неопределенным элементам матрицы.
По умолчанию оно рав- но 0 Уравнение вида ассхььс" ее=список, определяющее атрибуты (положительно-определенная, эрмитова ит, д.), с которыми матрица была создана > мзегьх)2) з > нат гз.х)2, 3) ' > Иасхз.х)1..1, 1.. 4, б) з [6 6 6' '6) Все параметры являются необязательными, и в случае их отсутствия созда- ется матрица размерности охо. Собственно говоря, для создания матрицы важны первые три параметра.
Остальные используются различными коман- дами для ускорения ее обработки. Глава 3. Пакеты > иатх1х ( [(1,2,3], [4,5, 6] 1) з з б~ > настах (2, (з., 1) ->х" (1+] ) ) ) Создать вектор можно конструктором чеосот () со следующим синтаксисом: Честот (о, 1п1С, хо, а)з, ат, от, т, а, о) з Чесхох[со1зхззп](о, 1п1т, хо, х1з, ат, с)С, т, а, о)з честот[тое](о, 1п1е, то, а)з, ас, ое, т, а, о)з В пакете шпеах)(1де)зха различаются векторы-столбцы, задаваемые с помощью первых двух форм конструктора, и векторы-строки, лля задания которых служит третья форма конструктора.
Их можно определять только с помощью первой формы, задавая соответствуюшее значение последнего паРаМЕтра о. оо1пхп ИЛИ то . ПЕрВЫй ПараМЕтр О ЗадаЕт раЗМЕрНОСтЬ ВЕКтОра И может принимать только целые положительные значения, большие или равные !. Остальные параметры соответствуют аналогичным в конструкторе матриц. Ф > Чеосох(2)з ) Чеосот (1 ..
3, 5, охз.епсасз.оптхое) [5,5,5] > чессот[тое] ([1, 2,3] ) ) [1,2,3] > Чессох(2,(1)-)х 1) (:1 При интерактивной работе в Мар[е иногда не совсем удобно создавать матрицы и векторы, обращаясь к их конструктору. Разработчики пакета 11пеатл1че)зта предоставили пользователю возможность использования краткой формы задания векторов и матриц: П <а,ь, с> создает матрицу или вектор по строкам; П <а)ь)с> создает матрицу или вектор по столбцам. Если величины, задаваемые в угловых скобках, не являются скалярами, то создается матрица, в противном случае вектор.
Часть ). Основы МарЬ )Уг > ч1о=<1,2,3>; 4 создание вектора-столбца 21 оо:= [ > ))2: <1)2)3>; () Создание вектора-строки )о2:= 1), 2, 3] > М1о=«1)2>,<3(4»о $ Создание матрицы по строкам яо:=[' о] > м2о=«1,3>)<2,4»4 $ Создание матрицы по столбцам :-[,' ,') > <М2)М1>; () Создание матрицы из двух других 3 4 3 4 > 1о)еп<1сумасг1х (2,2) о () единичная матрица [' ') > Еехонавтъх(2,3); () Нулевая матрица [о о о) > Сопзеапенаттах(6,2); () Матрица-константа > Вса1атнавтьх[а"2,2)4 () Скалярная матрица .[ ') В завершение разговора о задании матриц и векторов следует сказать о спе- циальных типах матриц, поддерживаемых пакетом ь1пеагл1ое)> -а.
Для создания специальных типов матриц и векторов — единичных, нулевых, матриц и векторов констант и скалярных — можно использовать специаль- ные конструкторы„хотя объекты указанных типов можно создать и при по- моши обших конструкторов. Пример 3.6 демонстрирует все типы специаль- ных конструкторов. Глава Э.
Пакеты > цпггчесгог[гоы] (2, 3) ) (] единичный вектор [0,1,0) > Еегочесгог[гоы](3)г (] Нулевой вектор [0,0,01 > СопагалгЧесгог[гон](5,3)) $ Вектор-константа 15,5,5) > Яса1агуестог[гоы] (х"2+у"2, 3, 4) ) $ Скалярный вектор [0,0,х +у~, О) При задании матриц и векторов больших размеров они не отображаются на рабочем листе. Вместо их содержимого отображается подсказка, что здесь расположен соответствующий объект и указывается его структура и размерность: > Иасггх(15, 15, (1,3) ->1*3) 15 х 15 Ма(пх Раса Туре: апуг]ипя 5(агаве; гес(аппп!аг Оп]ег: гопгвп огг[ег Для просмотра подобных векторов и матриц в Мар!е 6 включена специальная программа просмотра структурированных данных [Ягп)с(цге([ Оага Вготчзег), которую можно вызвать из контекстного меню командой Вготтаег.
Окно втой программы представлено на рис. 3,1. рив. 3.1. Окно программы. просмотра матриц и векторов больших размерностей Часть 1 Основы Мвр!е В этом окне отображается вся матрица, элементы которой представлены квадратиками разных цветов, в зависимости от величины значения. Можно установить режим отображения нулевых элементов белым цветом, а ненулевых черным (значение 8(гвс(вге в списке Туре) или вместо умалчиваемой цветной легенды (значение Майи((вйе в списке Туре) установить градации серого (значение Певв(ту в списке Туре). Выделив мышью необходимые элементы матрицы в окне отображения, как показано на рис.
3.1, в том же окне отобразятся их значения, которые можно корректировать (рис. 3.2). Рис. 3.2. Редактирование данных в программеорссмотра матриц и векторов больших размерностей 3.2.2.2. Элементарные операции с матрицами и векторами Как уже отмечалось ранее, основные операции с матрицами в пакете ььлеатл1деьга выполняются проще, чем такие же в пакете 1тса1д.
Это связано с тем, что идентификаторы векторов и матриц здесь вычисляются не до уровня имени, а непосредственно до уровня вычисления их компонентов. В связи с этим возможно выполнение поэлементного сложения, вычитания и составления линейных комбинаций векторов и матриц одинаковой размерности с использованием обычных арифметических операций. > Н1: «1!2>,<3)4»т 775 Глава 3. Пакеты > М2: «1017>,<8115»; > М1+М24 11 19 > М1-М2у > 3.1*М145*М2; с 53.1000000000000014 41.2000000000000029 1 49.2999999999999972 87.4000000000000057 ~ > Ч1:=<1(4>р И:= [1,41 1'2:= [3, 81 [-15, -361 и:-~ > Ч2:=<3(8>' > 3*Ч1-6*Ч2( > ЧЗ:=<3,8>; > Ч1+ЧЗ; 4 Нельзя получить линейную комбинацию $ вектора-отроки и вектора-столбца Екток, (4п ппаЫе/Зжд 1пча11о агспкепта > 10 + «2(5(11>,<4(6(7»; 10*1с1епп1пумасп1х(2,3( + «2(5(11>,<4(б(7»> 12 5 11 ( 4 1б 7( 12 5 11( 4 1б 7~ > 2+<1,2>; Еь кок, (1п ксаЫе/Зцю( 1пча1Ы агзяаьепеа Замечание Построение линейной комбинации матриц и векторов можно также выполнить, используя, соответственно, команды маш.хл<(с((1 и чеспоплс(4((1.
Если складывается скаляр с матрицей, то зто равносильно сложению мат- рицы с единичной матрицей, элементы которой умножены на заданный скаляр, вектор нельзя складывать со скаляром: Часть ! с)снввьг вйар(в Так как произведение матриц (имеется в виду операция скалярного умножения) не является коммугативной, то использование операции коммутативного умножения (*) для векторов и матриц приводит к ошибке. (Исключение допускается только для умножения матрицы саму на себя, причем в этом случае выполняется операция скалярного умножения.) Коммутативное умножение можно использовать для перемножения скаляра и матрицы или вектора.
В этом случае все элементы этих объектов умножаются на соответствующий скаляр: > -3*<1)2)3>; [-3, -б, -9) 32 24( > 4*«7,8>)<1,6*С»г Однако если скаляр содержит неопределенную переменную, то перемножения не происходит, так как Мар!е не знает, какой объект в дальнейшем эта переменная может содержать. Для выполнения такого умножения следует использовать команду згтр11гу() с параметром в)пппс11с или опцией авз~лпе=вса1ах.' > тп11: =х"2*<1) 2) 3>г тп!(:= х' [ 1, 2, 3 ] > зппр11ху(тп11 з)пп)пс11с) г [х', 2 х', 3 х') > вгпр11ху(пи11,авзтпе=вса1ах)г [хг, 2 хг, 3 хг! > в1:=х.у.гг т! .'=х.у.г > п2: х.г.у; т2:=х.г.у > 1х (т1гп2) сьеп рхтпг("гхие") е1ве рх1пп("Га1ве") епб гхг "Га1веп В этом примере нами использован оператор условия языка программирования Мар1е, чтобы показать не тождественность результата операции неком- Выполнить некоммугативное умножение в Мар!е 6 можно операцией, сим- волом которой является точка (.).
Она никогда не меняет сомножители мес- тами, поэтому произведения х.у. г и х. г. у не являются тождественными: Глава 3. Пакеты мутативного умножения трех величин, взятых в разных порядках. Надеемся, что читателю понятен смысл этого оператора, хотя при желании он может обратиться к главе б, посвященной именно программированию в Мар)е. В Мар!е 0 операция точка (.) больше не является операцией конкатенации, как это было в предыдущих версиях Мар!е. Для конкатенации используется операция(! !). Эта жс операция, примененная к матрицам и векторам выполняет их ска- лярное произведение. > <1,3>.<4[В>4 $ Вектор-столбец умножается на вектор-строку !2 18 > <4[б>.<1,3>; $ Вектор-строка умножается на вектор-столбец 22 > «3, -1> [<-В, 15>! <9, 10».«1,х,у> [<4, -7, 2»т 4 Матрица 2хЗ умножается [[ на матрицу Зх2 с 3 — Вх+9у 86~ -1+!5х+!Оу -893 Для получения степени квадратной матрицы можно последовательно применить операцию скалярного умножения необходимое число раз или операцию возведения в степень ("): > М:=«0.2[О.В>,<0.7[0.5»," > м.м.м.м.м; .679599999999999982 .902320000000000011 [ .789529999999999842 1.01797000000000004 3 > М"54 с .679599999999999982 .902320000000000122 ! .789529999999999842 1.01797000000000004 3' Показатель степени может быть и отрицательным целым числом, что позво- ляет вычислять обратную матрицу и ее степени: > М" [-1) с -1.08695652173913060 1.73913043478260887 1 1.52173913043478270 -.434782608695652272 3 Часть Ь Основы )ь[ар!е 178 > ь.м> с !.