17155

Лінійна алгебра в Maple

Лекция

Информатика, кибернетика и программирование

Лекція №26 Тема: Лінійна алгебра в Maple План Пакет linalg. Пакет LinearAlgebra. Елементарні операції з матрицями і векторами. Рішення систем лінійних рівнянь. У Maple виконання перетворень лінійної алгебри можна здійснювати за допомогою команд двох пакетів...

Украинкский

2013-06-29

118 KB

23 чел.

Лекція №26

Тема: Лінійна алгебра в Maple

План

  1.  Пакет linalg.
  2.  Пакет LinearAlgebra.
  3.  Елементарні операції з матрицями і векторами.
  4.  Рішення систем лінійних рівнянь.

У Maple  виконання перетворень лінійної алгебри можна здійснювати за допомогою команд двох пакетів: linalg і LinearAlgebra, функціональність яких практично однакова. Перший пакет входив до складу і всіх попередніх версій Maple, тоді як другий пакет — це новий засіб, що дозволяє працювати з числовими матрицями, у тому числі і з матрицями великих розмірів, використовуючи всю потужність відомого пакету чисельних розрахунків NAG (Numerical Algorithms Group).

Основними об'єктами, з якими працюють команди цих пакетів, є матриці, проте матриці одного пакету не еквівалентні матрицям іншого. У пакеті linalg використовуються матриці, побудовані на основі масиву, створюваного командою array про, тоді як в пакеті LinearAlgebra застосовуються вектори і матриці, побудовані на основі нової структури r-таблииы (r-table) і створювані спеціальними конструкторами vector про і Matrix про або з використанням короткої нотації <а,b,с>. Матриці в пакеті linalg обчислюються тільки до рівня своїх імен, тому в ньому неможливо обчислити операції поелементного підсумовування або віднімання, використовуючи прості операції над ідентифікаторами матриць, і доводиться користуватися спеціальним синтаксисом через команду evalm(). У пакеті LinearAlgebra матриці обчислюються до рівня своїх елементів, тому просте завдання імені матриці у області введення робочого листу приводить до відображення її елементів, а не імені матриці, як у випадку з пакетом linalg. Окрім цього, в пакеті LinearAlgebra матриці можуть задаватися як операнди складання і віднімання, що приводить до поелементного виконання вказаних операцій без використовування додаткових синтаксичних конструкцій.

Щоб ухвалити рішення, якому пакету лінійної алгебри віддати перевагу, рекомендується взяти до уваги наступні обставини:

  •  Пакет linalg корисний при виконанні абстрактних обчислень над матрицями і векторами.
  •  Пакет LinearAlgebra володіє більш дружнім інтерфейсом, працює з числовими матрицями і особливо ефективний при роботі з числовими матрицями великих розмірів через можливість звернення до програм пакету чисельних розрахунків NAG, що відкомпілюються.

Пакет linalg

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

Всі команди пакету лінійної алгебри працюють з матрицями і векторами. У Maple матрицею вважається двовимірний масив, індекси якого змінюються від одиниці. Аналогічно, вектор — це одновимірний масив з індексом, що змінюється від одиниці. Визначити матрицю або вектор в Maple можна двома способами: або за допомогою команди array() стандартної бібліотеки, або командами matrix ()  і vector()  пакету linalg.

Найзагальніший синтаксис команди array про, яка дозволяє задавати багатовимірні масиви з індексами, що змінюються в діапазонах цілих (як позитивних, так негативних) чисел, наступний:

array(діапазони, список, опції);

Всі параметри необов'язкові і можуть задаватися в довільному порядку. Параметр діапазонами є цілочисельні діапазони зміни індексів масивів, що задаються через кому, — розмірність масиву рівна кількості заданих діапазонів. Значення елементів масиву задаються параметром список у вигляді списку для одновимірних масивів або списку списків для багатовимірних масивів, Як значення параметра функції можна застосовувати symmetric,  antisymmetric,  identity і  diagonal.  Вони  використовуються для завдання масивів спеціального вигляду (симетричних, антисиметричних, одиничних і діагональних). Для завдання векторів і матриць за допомогою цієї функції слід указувати діапазони зміни індексів, що починаються з одиниці:

> vec:=array(1..2,[1,2]);

> matr:=array(1..2,1..2,[[1,2],[10,15]]);

Для завдання тих же вектора і матриці можна використовувати відповідно команди vector() і matrix() з пакету linalg, заздалегідь підключивши його командою with (linalg). Синтаксис цих команд наступний:

vector (n,[элемент1,элемент2,...]);

matrix (n,m,[элемент1,элемент2,...]);

Тут цілі величини n і m задають розмірності вектора і матриці, а значення їх елементів задаються у вигляді простого списку.

> vec:=vector(2,[1,2]);

> matr:=matrix(2,2,[1,2,10,15]);

У Maple 6 команди vector() і matrix() знаходяться в основній бібліотеці, тому ними можна користуватися і без підключення пакету linalg. Проте доступ до всієї решти команд цього пакету вимагає його явного підключення.

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

> vec[1]:=5;

> eval(vec);

Зверніть увагу, що для відображення вмісту вектора vec використана команда eval(), оскільки змінний, містить складні об'єкти, якими є і вектори, і матриці, обчислюється не повністю, а тільки до свого імені.

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

Пакет LinearAlgebra

Всі команди пакету LinearAlgebra можна викликати безпосередньо по імені, заздалегідь підключивши всі його команди функцією

> with(LinearAlgebra);

або окрему команду з використанням синтаксису

> with(LinearAlgebra, имя_команды);

Можна викликати команду, заздалегідь не підключаючи її, а використовуючи довге ім'я

LinearAlgebra [ім'я__команды] (параметри);

LinearAlgebra['ім'я__команды'](параметри);

Остання форма (ім'я команди, укладене в одинарні лапки), викликає відповідну команду пакету, навіть якщо в поточному сеансі використовується який-небудь об'єкт з таким же ім'ям.

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

> LinearAlgebra:-имя команди(параметри);

Команда, що в цьому випадку викликається, також буде завантажена, не конфліктуючи з об'єктом іншого типу, створеним в поточному сеансі.

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

Основні типи даних, з якими працюють команди пакету 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 не є тотожними.

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

> <1,3>.<4|6>;

> <4|6>.<1,3>;

Для отримання ступеня квадратної матриці можна послідовно застосувати операцію скалярного множення необхідне число раз або операцію зведення в ступінь(^)

> M:=<<0.2|0.8>,<0.7|0.5>>;

> M.M.M.M.M;

> M^5;

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

> M^(-1);

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

> restart:M:=Matrix(5,(i,j) ->3*i-j);

> M[3,1..-1];#выбор третього рядка

> M[3,2]; #Выбор елементу матриці

> M[1..-1,2];#Выбор другого стовпця

> M[2..3,2..4];#Выбор блоку розмірності 2х3

Всі перераховані операції можна виконувати за допомогою команд пакету LinearAlgebra, які рекомендується використовувати при програмуванні в Maple, хоча і допустиме їх використовування при інтерактивній роботі. Неповний список команд допустимих операцій над матрицями і векторами приведений в табл. .

Таблиця . Команди виконання операцій над матрицями і векторами

Назва команди

Опис

DeleteRow

Видалення рядка матриці

DeleteColumn

Видалення стовпця матриці

Row

Виділення рядка матриці

Column

Виділення стовпця матриці

SubMatrix

Виділення підматриці із заданої матриці

SubVector

Виділення підвектора із заданого вектора

ScalarMultiply

Множення матриці/вектора на скаляр

MatrixVectorMultiply

Скалярний твір матриці на вектор-стовпець

VectorMatrixMultiply

Скалярний твір вектора-рядка на матрицю

MatrixMatrixrMuitiply

Скалярний твір матриці на матрицю

MatrixInverse

Обчислення зворотної матриці

Determinant

Обчислення визначника матриці

Minor

Виділення мінору матриці

ConditionNumber

Обчислення числа обумовленості матриці

Eigenvalues

Обчислення власних значень матриці

Eigenvectors

Обчислення власних векторів

Одержати повну інформацію про всіх перерахованих в табл. командах можна на сторінках довідки по кожній з команд, які відображаються після виконання команди ?имя команди.

Рішення систем лінійних рівнянь

У пакет LinearAlgebra, як і в пакет linalg, входить спеціальна команда LinearSolve() рішення систем лінійних рівнянь алгебри. На відміну від свого двійника linsolve() з пакету linalg в цій команді можна вказати спосіб, яким слід вирішувати систему, але аналогічно своєму двійнику вона вимагає завдання системи рівнянь в матричній формі, тобто як параметри їй передаються матриця а системи і вектор правих частин b. Сама система в матричній формі записується у вигляді а.x=b.

Загальний синтаксис команди LinearSolve() наступний:

LinearSoive(А,   В,   m,   t,   з,   ip,   outopts);

Тут параметр а представляє матрицю системи, а параметр B — її ліву частину, причому в може задаватися як у вигляді вектора, так і у вигляді матриці. У останньому випадку за одне звернення до команди рішення системи лінійних рівнянь розв'язуватиметься безліч систем з правими частинами, представленими векторами — стовпцями матриці в. Параметр в можна і не задавати, передаючи як перший параметр розширену матрицю системи <А|B>. Розмірності матриці рішення узгоджуються з размерностямі матриць правої і лівої частин рівняння. Якщо матриця системи а має розмірність mxn, і права частина представлена матрицею mxp, то результатом буде матриця розмірності nхр, стовпці якої будуть рішеннями відповідних систем.

Необов'язковий параметр m задається у формі рівняння method=имя, де ім'я вибирається з наступного списку: 'none', 'solve', 'subs', 'Cholesky', 'LU’, 'QR', 'sparseLU' і визначає метод рішення системи рівнянь.

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

Необов'язковим параметром з у формі рівняння conjugate=true/false визначається, чи слід будувати ермітову зв'язану матрицю при використовуванні методу Холецкого або QR-декомпозиции.

Література:

       Матросов А.В. Maple 6. Решение задач высшей математики и механики, Москва, 2000 – 528 с. [4], 160-187

Контрольні запитання:

  1.  Використання пакету linalg.
  2.  Використання пакету LinearAlgebra.


 

А также другие работы, которые могут Вас заинтересовать

54403. Множина та ії елементи 88 KB
  Мета уроку: Формувати знання учнів про множину та ії елементи, способи знання, порожню множину, рівні множин, сприяти розвитку навичок роботи з множиною, логічного мислення здібностей до самоаналізу, виховувати інформаційну і соціальну компетентності.
54404. Множина та її елементи 78 KB
  Мета: формувати знання про множину та її елементи; вивчити означення рівних множин, порожньої множини; розглянути способи задання множини; відтворювати означення вивчених понять; формулювати вивчені властивості; розв’язувати найпростіші завдання на використання вивчених понять.
54405. ПОШУК НОВИХ ФОРМ РОБОТИ ЗІ ЗДІБНИМИ УЧНЯМИ В ПОЗАШКІЛЬНОМУ ПРОСТОРІ ЦЕНТР РОЗВИТКУ ОБДАРОВАНОЇ МОЛОДІ – ОДНА З ТАКИХ ФОРМ 153 KB
  Слід сказати що новий заклад має популярність серед школярів: майже всі хто в місті займається творчістю наукою бере участь в предметних олімпіадах відвідують секції ЦРОМу. Пропонуємо до уваги модель секції УМ та ТЛ†в складі ЦРОМ. Модель секції УМ та ТЛ†Наповнюваність секції: 820 учнів різних за віком: 7 11 клас. Мета секції: Створення сприятливих умов для розкриття й реалізації творчого потенціалу філологічно обдарованих дітей і тих...
54406. Модель випускника Запорізького педагогічного коледжу, майбутнього вчителя іноземної мови 57 KB
  викладач вищої категоріївикладачметодист голова циклової комісії викладачів іноземних мов Запорізького педагогічного коледжу Модель випускника Запорізького педагогічного коледжу майбутнього вчителя іноземної мови Відомо що сучасна педагогічна освіта передбачає підготовку викладача іноземної мови як правило у трьох типах вищих навчальних закладів: на відповідних факультетах педагогічних лінгвістичних...
54407. Урок в умовах модернізації шкільної освіти 49 KB
  Триєдине завдання уроку Освітня: озброїти учнів системою знань умінь і навичок. сформувати продовжити формування закріпити такі спільні навчальні вміння та навички на матеріалі цього уроку . для вирішення завдання розвитку у школярів самостійності мислення і в навчальній діяльності забезпечити в ході уроку . забезпечити в ході уроку розвиток мовлення учнів; збагачувати й ускладнювати словниковий склад і смислові функції мови учнів під час вирішення освітніх завдань.
54408. Модернізм як художньо-естетична система 225 KB
  МЕТА УРОКУ: активізувати і закріпити знання учнів набуті в попередні роки про літературні течії і напрямки у курсі української та зарубіжної літератури; зясувати причини появи філософські засади основні ознаки та етапи розвитку модернізму у мистецтві та літературі зарубіжній та українській; розкрити особливості основних напрямів і течій раннього модернізму; розвивати практичні навички аналізу символістських поезій та зразків імпресіонізму в українській та зарубіжній літературі; вміння спів ставляти різні напрями в літературі та...
54409. Modische Kleidung 217.5 KB
  Kinder! Das Thema der heutigen Stunde ist „Modische Kleidung“. Wisst ihr solhe Redensart „Kleider machen Leute“? Das ist ein deutsches Sprichwort. Meiner Meinung nach hat diese Redensart einen gleichen Sinn in allen Sprachen. Kinder, wie versteht ihr „Kleider machen Leute“? Beantwortet bitte lakonisch, schnell und deutlich.
54410. Материки Південної півкулі Австралія, Південна Америка і Антарктида 73.5 KB
  Мета: Дати учням установку на вивчення нової теми, познайомити з структурною моделлю модуля, з самостійною роботою по вивченню нового матеріалу,сприяти розвитку комунікативної компетентності. Дати учням загальну уяву про природу материків Південної півкулі: Австралія, Південна Америка, Антарктида.
54411. Підсумкова контрольна робота з математики тестового характеру 168 KB
  Мета оцінювання: Встановити відповідність рівня навчальних досягнень учнів 1 класу з математики за навчальний рік Програмовим вимогам.