Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5fan_ru_Лінійна алгебра в Maple.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
120.83 Кб
Скачать

Основні типи даних

Основні типи даних, з якими працюють команди пакету LinearAlgebra, є скаляри, що представляють як числа, так і вирази алгебри, а також матриці і вектори, визначувані на базі нового типу даних r-таблиці. Матриці і вектори створюються за допомогою відповідних конструкторів.

Конструктором матриць є команда Matrix про (обов'язково із заголовної букви), синтаксис якої має наступний вигляд:

Matrix(r, з, init, ro, sc, sh, st, про, dt, f, а);

Семантика параметрів і їх допустимі значення представлені в табл. 3.2.

Таблиця . Параметри конструктора матриць

Параметр

Опис

r

Ненегативне ціле або діапазон цілих чисел, що починається з 1.Представляет кількість рядків в матриці

c

Ненегативне ціле або діапазон цілих чисел, що починається з 1. Представляє кількість стовпців в матриці

ro

Задається у вигляді readonly або readonly=true і визначає, що значення елементів матриці, визначені при її створенні, не можуть бути змінені надалі.І т.д.

Всі параметри є необов'язковими, і у разі їх відсутності створиться матриця розмірності 0х0. Власне кажучи, для створення матриці важливі перші три параметри. Інші використовуються різними командами для прискорення її обробки.

Приклад Створення матриць

> Matrix(2);

> Matrix(2,3);

> Matrix(1..1,1..4,6);

> Matrix([[1,2,3],[4,5,6]]);

> Matrix(2,(i,j) ->x^(i+j));

Створити вектор можна конструктором Vector() з наступним синтаксисом:

Vector(d, init, ro, sh, st, dt, f, а, про);

Vector [column](d, init, ro, sh, st, dt, f, а, про);

Vector [row](d, init, ro, sh, st, dt, f, а, про);

У пакеті LinearAlgebra розрізняються вектори-стовпці, що задаються за допомогою перших двох форм конструктора, і вектори-рядки, для завдання яких служить третя форма конструктора. Їх можна визначати тільки за допомогою першої форми, задаючи відповідне значення останнього параметра про: column або row. Перший параметр d задає розмірність вектора і може приймати тільки цілі позитивні значення, великі або рівні 1. Решта параметрів відповідає аналогічним в конструкторі матриць.

Приклад Створення векторів

> Vector(2);

> Vector(1..3,5,orientation=row);

> Vector(2,(i) ->x^i);

При інтерактивній роботі в Maple іноді не зовсім зручно створювати матриці і вектори, звертаючись до їх конструктора. Розробники пакету LinearAlgebra надали користувачу можливість використовування короткої форми завдання векторів і матриць:

<а,b,c> створює матрицю або вектор по рядках;

<a|b]c> створює матрицю або вектор по стовпцях.

Якщо величини, що задаються в кутових дужках, не є скалярами, то створюється матриця, інакше вектор.

Приклад Коротка форма завдання векторів і матриць

> V1:=<1,2,3>;

> V2:=<1|2|3>;

> M1:=<<1|2>,<3|4>>;

> M2:=<<1,3>|<2,4>>;

> <M2|M1>;

Для створення спеціальних типів матриць і векторів — одиничних, нульових, матриць і векторів констант і скалярних — можна використовувати спеціальні конструктори, хоча об'єкти вказаних типів можна створити і за допомогою загальних конструкторів. Приклад демонструє всі типи спеціальних конструкторів.

Приклад Спеціальні типи векторів і матриць

> with(LinearAlgebra):IdentityMatrix(2,2);

> ZeroMatrix(2,3);

> ConstantMatrix(6,2);

> ScalarMatrix(a^2,2);

> UnitVector[row](2,3);

> ZeroVector[row](3);

> ConstantVector[row](5,3);

> ScalarVector[row](x^2+y^2,3,4);

При завданні матриць і векторів великих розмірів вони не відображаються на робочому листі. Замість їх вмісту відображається підказка, що тут розташований відповідний об'єкт і указується його структура і розмірність:

> Matrix(15,15,(i,j) ->i*j);

Елементарні операції з матрицями і векторами

Як вже наголошувалося раніше, основні операції з матрицями в пакеті LinearAlgebra виконуються простіше, ніж такі ж в пакеті linalg. Це пов'язано з тим, що ідентифікатори векторів і матриць тут обчислюються не до рівня імені, а безпосередньо до рівня обчислення їх компонентів. У зв'язку з цим можливе виконання поелементного складання, віднімання і складання лінійних комбінацій векторів і матриць однакової розмірності з використанням звичних арифметичних операцій.

Приклад Елементарні операції з векторами і матрицями

> M1:=<<1|2>,<3|4>>;

> M2:=<<10|7>,<8|15>>;

> M1+M2;

> M1-M2;

> 3.1*M1+5*M2;

> V1:=<1|4>;

> V2:=<3|8>;

> 3*V1-6*V2;

> V3:=<3,8>;

> V1+V3;

Error, (in rtable/Sum) invalid arguments

Якщо складається скаляр з матрицею, то це рівносильно складанню матриці з одиничною матрицею, елементи якої помножені на заданий скаляр, вектор не можна складати з скаляром:

Побудову лінійної комбінації матриць і векторів можна також виконати, використовуючи, відповідно, команди MatrixAdd () і VectorAdd ().

Оскільки твір матриць (мається на увазі операція скалярного множення) не є комутативною, те використовування операції комутативного множення (*) для векторів і матриць приводить до помилки. (Виключення допускається тільки для множення матриці саму на себе, причому в цьому випадку виконується операція скалярного множення.) Комутативне множення можна використовувати для перемножування скаляра і матриці або вектора.

Проте якщо скаляр містить невизначену змінну, то перемножування не відбувається, оскільки Maple не знає, який об'єкт надалі ця змінна може містити. Для виконання такого множення слід використовувати команду simplify() з параметром symbolic або опцією assume=scalar:

> mull:=x^2*<1|2|3>;

> simplify(mull,symbolic);

Виконати некомутативне множення в Maple 6 можна операцією, символом якої є крапка (.). Вона ніколи не міняє співмножники місцями, тому твори x.y.z і x.z.y не є тотожними.