Cистема комп'ютерної алгебри Maple
Основні визначення лінійної алгебри
Перш ніж перейти до розгляду великих можливостей пакетів Maple 7 по частині рішення задач лінійної алгебри, розглянемо короткі визначення, що відносяться до неї.
Матриця (m х n) - прямокутна двовимірна таблиця, яка містить m рядків і n стовпців елементів, кожен з яких може бути представлений числом, константою, змінною, символьним або математичним виразом (розширювальне трактування матриці).
Квадратна матриця - матриця, у якої число рядків m дорівнює числу стовпців n. Приклад квадратної матриці розміру 3x3:
Сингулярна (вироджена) матриця - квадратна матриця, у якої детермінант (визначник) дорівнює 0. Така матриця зазвичай не спрощується при символьних обчисленнях. Лінійні рівняння з майже сингулярними матрицями можуть давати великі похибки при вирішенні.
Одинична матриця - це квадратна матриця, у якій діагональні елементи рівні 1, а інші елементи рівні 0. Нижче представлена одинична матриця розміру 4x4:
Сингулярні значення матриці А - квадратний корінь з власних значень матриці АТ = А, де Ат - транспонована матриця А (див. Її визначення нижче); Транспонована матриця - матриця, у якої .столбци і рядки змінюються. місцями, тобто елементи транспонованою матриці задовольняють умові AT (i, j) = A (j, i). Наведемо простий приклад. Вихідна матриця:
Транспонована матриця:
Зворотній матриця - це матриця М-1, яка, будучи помноженою на вихідну квадратну матрицю М, дає одиничну матрицю Е.
Ступінчаста форма матриці відповідає умовам, коли перший ненульовий елемент в кожному рядку є 1 і перший ненульовий елемент кожного рядка з'являється праворуч від першого ненульового елемента в попередньому рядку, тобто всі елементи нижче першого ненульового в рядку - нулі.
Діагональ матриці - розташовані діагонально елементи Ai, i матриці А. У наведеній нижче матриці елементи діагоналі представлені великими літерами:
Зазвичай зазначену діагональ називають головною діагоналлю - для матриці А, наведеною вище, це діагональ з елементами А, Е і L. Іноді вводять поняття під діагоналей (елементи d і k) і над діагоналей (елементи b і f). Матриця, всі елементи якої, розташовані крім як на діагоналі, під діагоналі і над діагоналі, дорівнюють нулю, називається стрічкової.
Ранг матриці - найбільший з порядків відмінних від нуля мінорів квадратної матриці.
Слід матриці - сума діагональних елементів матриці.
Визначник матриці - це многочлен від елементів квадратної матриці, кожен член якого є твором n елементів, узятих по одному з кожного рядка і кожного стовпця зі знаком твори, заданим парністю перестановок:
де M1 <j> - визначник матриці порядку n - 1, отриманої з матриці А викреслюванням першого рядка і j-гo стовпця. У такому вигляді визначник (він же детермінант) легко отримати в символьних обчисленнях. У численних розрахунках ми будемо мати на увазі під визначником чисельне значення цього многочлена.
Матриця в цілій степені - квадратна матриця в ступеня n (n - ціле невід'ємне число), що визначається таким чином:
М ° = Е, М1 = М, М2 = ММ ..., М n = Мn-1М.
Ідемпотентна матриця - матриця, що відповідає умові Р2 = Р.
Симетрична матриця - матриця, що відповідає умові Ат = А.
Кососімметріческіх матриця - матриця, що відповідає умові Ат = -A. Ортогональна матриця - матриця, що відповідає умові Ат = А-1.Нуль-матриця - матриця, всі елементи якої дорівнюють 0.Блок-матриця - матриця, складена з менших за розміром матриць, також можна уявити як матрицю, кожний елемент якої - матриця. Окремим випадком є блок-діагональна матриця - блок-матриця, елементи-матриці якої поза діагоналі - нуль-матриці.
Комплексно-сполучена матриця - матриця А, отримана з вихідної матриці А заміною її елементів на комплексно-зв'язані. Ермітова матриця - матриця А, яка задовольнить умові А = А Власне вектор квадратної матриці А - будь-який вектор х е V ", х * О, задовольняє рівняння Ах = gx, де g - деяке число, зване власним значенням матриці А.
Характеристичний поліном - визначник різниці цієї матриці і одиничної матриці, помножений на змінну многочлена, - | А - gE |. Власні значення матриці - коріння її характеристичного многочлена. Норма - узагальнене поняття абсолютної (величини числа. Норма тривимірного вектора || х || - його довжина. Норма матриці - значення sup (|| Ax || / || x ||).
Матрична форма запису системи лінійних рівнянь - вираз АХ = В, де А - матриця коефіцієнтів системи, X - вектор невідомих і В - вектор вільних членів. Один із способів вирішення такої системи очевидний - X = А-1В, де А-1 - зворотна матриця.
Пакет рішення задач лінійної алгебри linalg
Склад пакету linalg
Безсумнівно, що унікальною можливістю системи Maple 7, як і інших систем комп'ютерної алгебри, є можливість вирішення завдань лінійної алгебри в символьному (формульному, аналітичному) вигляді. Однак таке рішення являє скоріше теоретичний, ніж практичний інтерес, оскільки навіть при невеликих розмірах матриць (вже при 4-5 рядках і шпальтах) символьні результати виявляються дуже громіздкими і труднообозримой. Вони корисні тільки при вирішенні специфічних аналітичних задач, наприклад з розрідженими матрицями, у яких більшість елементів мають нульові значення.
Тому розробники Maple 7 були змушені реалізувати у своїй системі чисельні методи розв'язання задач лінійної алгебри, які широко використовуються в основних сферах її застосування - математичному моделюванні систем і пристроїв, розрахунки в електротехніці, механіці, астрономії і т. Д.
У ядро Maple 7, як зазначалося, введені дуже скромні і мінімально необхідні кошти для вирішення завдань лінійної алгебри. Основний упор в їх реалізації зроблений на підключаються пакети. Основним з них, успадкованим від попередніх реалізацій системи, є пакет рішення задач лінійної алгебри Unalg. Це один із самих великих і потужних пакетів в області вирішення завдань лінійної алгебри. Він містить понад ста функцій:
> With (linalg);
Warning, the names fibonacci, inverse and multiply have been redefined Warning, the protected names norm and trace have been redefined and unprotected [BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp, QRdecomp, Wronskian, addcol, addrow, adj, adjoint, angle, augment, backsub, band, basis, bezout, blockmatrix, charmat, charpoly, cholesky, col, coldim, colspace, colspan, companion, concat, cond, copyinto, crossprod, curl, definite, delcols, delrows, det, diag, diverge, dotprod, eigenvals, eigenvalues, eigenvectors, eigenvects, entermatrix, equal, exponential, extend, ffgausselimfifibonacci, forwardsub, frobenius, gausselim, gaussjord, geneqns, genmatrix, grad, hadamard, hermite, hessian, hilbert, htranspose, thermite, indexfunc, innerprod, intbasis, inverse, ismith, issimilar, iszerojacobian, Jordan, kernel, laplacian, leastsqrs, linsolve, matadd, matrix, minor, minpoly, mulcol, / їм / row, multiply, norm, normalize, nullspace, orthog, permanent, pivot, potential, randmatrix , randvector, rank , Ratform, row, rowdim, rowspace, rowspan, rref, scalarmul, singularvals, smith, stackmatrix, submatrix, subvector, sumbasis, swapcol, swaprow, Sylvester, toeplitz, trace, transpose, vandermonde, vecpotent, vectdim, vector, wronskian]
Нижче вказано призначення тих функцій пакета linalg, які детально не описані:
- addcol - додає до одного зі стовпців інший стовпець, помножений на деяке число;
- addrow - додає до однієї з рядків інший рядок, помножену на деяке число;
- angle - обчислює кут між векторами;
- augment - об'єднує дві або більше матриць по горизонталі;
- backsub - реалізує метод зворотного підстановки при вирішенні системи лінійних рівнянь (див. також forwardsub);
- band - створює стрічкову матрицю;
- basis - знаходить базис векторного простору;
- bezout - створює Bezout-матрицю двох поліномів; . г
- BlockDiagonal - створює блок-діагональну матрицю;
- blockmatrix - створює блок-матрицю;
- cholesky - декомпозиція Холесского для квадратної позитивно певної матриці;
- charmat - створює характеристическую матрицю (charmat (M, v) - матриця, що обчислюється як v EM);
- charpoly - повертає характеристичний поліном матриці;
- colspace - обчислює базис простору стовпців;
- colspan - знаходить базис лінійної оболонки стовпців матриці;
- companion - обчислює супроводжуючу матрицю, асоційовану з поліномом;
- cond - обчислює число обумовленості матриці (cond (M) є величина norm (M) norm (М-1);
- curl - обчислює ротор вектора;
- definite - тест на позитивну (негативну) визначеність матриці;
- diag - створює блок-діагональну матрицю;
- diverge - обчислює дивергенцію векторної функції;
- eigenvals - обчислює власні значення матриці;
- eigenvects - обчислює власні вектори матриці;
- equal - визначає, чи є дві матриці рівними;
- exponential - створює експонентну матрицю;
- ffgausselim - вільний від дробів Гаусове виключення в матриці;
- fibonacci - матриця Фібоначчі;
- forwardsub - реалізує метод прямої підстановки при вирішенні системи лінійних рівнянь (наприклад, для матриці L і вектора b
- forwardsub (L, b) повертає вектор рішення х системи лінійних рівнянь Lx = b);
- frobenius - обчислює форму Фробениуса (Frobenius) матриці;
- gausselim - Гаусове виключення в матриці;
- gaussjord - синонім для rref (метод виключення Гаусса-Жордана);
- geneqns - генерує елементи матриці з рівнянь;
- genmatrix - генерує матрицю з коефіцієнтів рівнянь;
- grad - градієнт векторного виразу;
- GramSchmidt - обчислює ортогональні вектори;
- hadamard - обчислює обмеження на коефіцієнти детермінанта;
- hessian - обчислює гессіан-матрицю вирази;
- hilbert - створює матрицю Гільберта;
- htranspose - знаходить ермітовим транспоновану матрицю;
- ihermite - целочисленная ермітовим нормальна форма;
- indexfunc - визначає функцію індексації масиву;
- Innerprod - обчислює векторний добуток;
- Intbasis - визначає базис перетину просторів;
- ismith - целочисленная нормальна форма Шмітта;
- iszero - перевіряє, чи є матриця нуль-матрицею;
- jacobian - 'обчислює якобіан векторної функції;
- JordanBlock - повертає блок-матрицю Жордана;
- kernel - знаходить базис ядра перетворення, відповідного даній матриці;
- laplacian - обчислює лапласіан;
- leastsqrs - рішення рівнянь за методом найменших квадратів;
- linsolve - рішення лінійних рівнянь;
- LudeComp - здійснює LU-розкладання;
- minpoly - обчислює мінімальний поліном матриці;
- mulcol - примножує стовпець матриці на заданий вираз;
- mulrow - примножує її рядок на заданий вираз;
- multiply - множення 'матриць або матриці і вектора;
- normalize - нормалізація вектора;
- orthog - тест на ортогональность матриці;
- permanent - обчислює перманент матриці - визначник, який вираховується без перестановок;
- pivot - обертання щодо елементів матриці;
- potential - обчислює потенціал векторного поля;
- Qrdecomp - здійснює QR-розкладання;
- randmatrix - генерує випадкові матриці;
- randvector - генерує випадкові вектори;
- ratform - обчислює раціональну канонічну форму;
- references - виводить список основних робіт з лінійної алгебри;
- rowspace - обчислює базис простору рядка;
- rowspan - обчислює вектори охоплення для місця стовпчика;
- rref - реалізує перетворення Гаусса-Жордана матриці;
- scalarmul - множення матриці або вектора на заданий вираз;
- singval - обчислює сингулярне значення квадратної матриці;
- singularvals - повертає список сингулярних значень квадратної матриці;
- smith - обчислює Шміттову нормальну форму матриці;
- submatrix - витягує зазначену підматрицю з матриці;
- subvector - витягує вказаний вектор з матриці;
- sumbasis - визначає базис об'єднання системи векторів;
- swapcol - міняє місцями два стовпці в матриці;
- swaprow - міняє місцями два рядки в матриці;
- sylvester - створює матрицю Сильвестра з двох поліномів;
- toeplitz - створює матрицю Теплиця;
- trace - повертає слід матриці;
- vandermonde - створює вандермондову матрицю;
- vecpotent - обчислює векторний потенціал;
- vectdim - визначає розмірність вектора;
- wronskian - вронскиан векторних функцій.
Нижче ми розглянемо більш докладно найбільш часто використовувані функції з цього пакета. З деталями синтаксису (досить різноманітного) для кожної із зазначених функцій можна ознайомитися в довідковій системі Maple. Для цього досить використовувати команду
? Name; де name - ім'я функції (з наведеного списку).
Інтерактивний введення матриць
Для інтерактивного введення матриць можна, визначивши розмірність деякого масиву, використовувати функцію entermatrix:
> А: = Агга (1..3,1..3):
А: = Агга (1 ..3,1 .. 3, [])
Після виконання цього фрагмента документа діалог з користувачем має наступний вигляд:
Основні функції для завдання векторів і матриць
У бібліотечному файлі Unalg є наступні функції для завдання векторів і матриць:
- vector (n, list) - сoзданіе вектора з n елементами, заданими в списку list;
- matrix (n, m, list) - створення матриці з числом рядків n і стовпців m з елементами, заданими списком list.
Нижче показано застосування цих функцій:
Зверніть увагу на останні приклади - вони показують виклик індексованих змінних вектора і матриці.
Функції для роботи з векторами і матрицями
Для роботи з векторами і матрицями Maple 7 має безліч функцій, що входять в пакет linalg. Обмежимося приведенням короткого опису найбільш поширених функцій цієї категорії.
Операції зі структурою окремого вектора V і матриці М:
- coldim (M) - повертає число стовпців матриці М;
- rowdim (M) - повертає число рядків матриці М;
- vectdim (V) - повертає розмірність вектора V;
- col (M, i) - повертає i-й стовпець матриці М;
- row (M, i) - повертає i-й рядок матриці М;
- tninor (M, i, j) - повертає мінор матриці М для елемента з індексами i та j;
- delcols (M, i .. j) - видаляє стовпці матриці М від i-roдо j-ro;
- del rows (V, i..j) - видаляє рядки матриці М від i-ої до j-й;
- extend (М, т, n, х) - розширює матрицю М на m рядків і n стовпців із застосуванням заповнювач х.
Основні векторні і матричні операції:
- dotprod (U, V) - повертає скалярний добуток векторів U і V;
- crossprod (U, V) - повертає векторний добуток векторів U і V;
- norm (V) або norm (M) - повертає норму вектора або матриці;
- copyinto (A, B, i, j) - копіює матрицю А в В для елементів послідовно від i до j;
- concat (Ml, M2) - повертає об'єднану матрицю з горизонтальним злиттям матриць Ml і М2;
- stack (Ml, M2) - повертає об'єднану матрицю з вертикальним злиттям Ml і М2;
- matadd (A, B) і evalm (A + B) - повертає суму матриць А і В;
- multlply (A, B) і evalm (A & * B) - повертає твір матриць А і В;
- adjoint (М) або adj (M) - повертає приєднану матрицю, таку що M? adj (M) дає діагональну матрицю, визначник якої є det (M);
- charpoly (M, lambda) - повертає характеристичний поліном матриці М щодо заданої змінної lambda;
- det (M) - повертає детермінант (визначник) матриці М;
- Eigenvals (M, vector) - інертна форма функції, що повертає власні значення матриці М і (при вказівці необов'язкового параметра vector) відповідні їм власні вектори;
- jordan (M) - повертає матрицю М у формі Жордана;
- hermite (M) - повертає матрицю М в ермітової формі;
- trace (M) - повертає слід матриці М;
- rank (M) - повертає ранг матриці М;
- transpose (M) - повертає транспоновану матрицю М;
- inverse (M) або evalm (l / M) - повертає матрицю, зворотну до М;
- singularvals (A) - повертає сингулярні значення масиву або матриці А.
Наведемо приклади застосування деяких з цих функцій:
Читач, який розуміє суть матричних обчислень, легко впорається з тестуванням інших функцій, що входять в пакет linalg. У наведених прикладах корисно звернути увагу на те, що багато матричні функції здатні видавати результати обчислень в аналітичному вигляді, що полегшує розбір виконуваних ними операцій.
Рішення систем лінійних рівнянь
Нижче представлений простий приклад складання і рішення трьох систем лінійних рівнянь із застосуванням функцій, що входять в пакет linalg:
А тепер розглянемо приклад рішення матричного рівняння в символьному вигляді:
Наступний приклад показує рішення більш складної системи лінійних рівнянь з комплексними коефіцієнтами:
На цей раз рішення отримано використанням функцій множення матриць і обчислення зворотної матриці у вигляді X = А-1 В, тобто в матричному вигляді. В кінці прикладу показано перетворення результатів з метою їх отримання в звичайній формі комплексних чисел з частинами, представленими у формі чисел з плаваючою точкою.
Пакет лінійної алгебри з алгоритмами NAG LinearAlgebra
Призначення і завантаження пакета LinearAlgebra
В останні роки розробники систем символьної математики усвідомили, що мала швидкість виконання векторних і матричних операцій при вирішенні задач лінійної алгебри обертається втратою помітної частини ринку систем комп'ютерної математики. Нові версії таких систем (Mathematica 4 / 4.1 і Maple 6/7) відрізняються від колишніх насамперед різким підвищенням ефективності вирішення завдань лінійної алгебри в чисельному вигляді.
У нових реалізаціях систем Maple і MATLAB була зроблена ставка на використання давно апробованих швидких алгоритмів лінійної алгебри, запропонованих творцями Number Algorithm Group (NAG). Ці алгоритми здавна застосовуються на великих ЕОМ і суперкомп'ютерах, забезпечуючи прискорення численних матричних операцій від декількох разів до декількох десятків разів. Їх застосування забезпечує ефективне використання систем символьної математики в рішенні задач, що зводяться до завдань лінійної алгебри. У числі таких завдань численні завдання теоретичної електротехніки, механіки багатьох об'єктів, моделювання електронних пристроїв і т. Д. В Maple 7 використання алгоритмів NAG є однією з перших відмінних рис нової версії системи. Воно реалізується новим пакетом LinearAlgebra. Для його завантаження використовуються наступні команди:
> Restart; with (LinearAlgebra):
[Add, Adjoint, BackwardSubstitute, BandMatrix, Basis, BezoutMatrix, BidiagonalForm, BilinearForm, CharacteristicMatrix, CharacteristicPolyhomial, Column, ColumnDimension, ColumnOpemtion, ColumnSpace, CompanionMatrix, CondittonNumber, ConstantMatrix, ConstantVector, CreatePermutation, CrossProduct, DeleteColumn, DeleteRow, Determinant, DiagonalMatrix, Dimension ,
Dimensions, DotProduct, Eigenvalues, Eigenvectors, Equql, FonyardSubstitute, FrobeniusForm, GenerateEquations, GenerateMatrix, GetResuNDataType, * GetResultShape, GivensRotationMatrix, GramSchmidt, HarikelMatrix, HermiteForm, HermitianTranspose, HessenbergForm, HilbertMatrix, Households-Matrix, IdentityMatrix, IntersectionBasis, IsDefinite, IsOrthogonal, IsSimilar , IsUnitary,
JordanBlockMatrix, JordanForm, LA_Main, LUDecomposition, LeastSquares, LinearSolve, Map, Map2, MatrixAdd, Matrixlnverse, MatrixMatrixMultiply, MatrixNorm, MatrixScalarMultiply, MatrixVectorMultiply, Minimal / Polynomial, Minor, Multiply, NoUserValue, Norm, Normalize, NullSpace, OuterProductMatrix, Permanent, Pivot, QRDecomposition, RandomMatrix, RandomVector, Rank, Row,
RowDimension, RowOperation, RowSpace, ScalarMatrix, ScalarMultiply, ScalarVector, SchurForm, SingularValues, SmithForm, SubMatrix, SubVector, SumBasis, SylvesterMatrix, ToeplitzMatrix, Trace, Transpose, TridiagonalForm, UnitVector, VandermondeMatrix, VectorAdd, VectorAngle, VectorMatrixMultiply, VectorNorm, VectorScalarMultiply, ZeroMatrix, Zero Vector, Zip]
> 1nfolevel [LinearA1gebra]: = l:
infolevelLinearAlgebra: = 1
Неважко помітити, що багато функцій цього пакету повторює за призначенням функції старішого пакета linalg, описаного вище. Тому ми не будемо зупинятися на їх повторному описі. Головне те, що ці функції задіють можливості швидких алгоритмів NAG і на відміну від функцій пакета linalg орієнтовані на чисельні розрахунки в форматі обробки дійсних чисел, характерному для комп'ютерної платформи. Знаючий матричні методи читач легко зрозуміє призначення функцій пакета LinearAlgebra по їх складовим назв. Наприклад, DeleteColumn означає видалення стовпця матриці, ToeplitzMatrix означає створення матриці Теплиця, ZeroMatrix - створення матриці з нульовими елементами і т. Д. Все імена функцій цього пакету починаються з великої літери.
Приклади матричних операцій із застосуванням пакета LinearAlgebra
Застосування алгоритмів NAG особливо ефективно в тому випадку, коли використовується вбудована в сучасні мікропроцесори арифметика чисел з плаваючою комою. За допомогою спеціального прапора таку арифметику можна відключати або включати:
> UseHardwareFloats: = false; # Use software floats
UseHardwareFloats: = false
> UseHardwareFloats: = true: # default behaviour
UseHardwareFloats: = true
Матриці в новому пакеті лінійної алгебри можуть задаватися в кутових дужках, як показано нижче:
Після цього можна виконувати з ними типові матричні операції. Наприклад, можна інвертувати (звертати) матриці:
Зверніть увагу, що Maple 7 тепер видає інформаційні повідомлення про нові умови реалізації операції інвертування матриць з речовими елементами, і зокрема про використання алгоритмів NAG і арифметики, вбудованої в співпроцесор. (
Наступний приклад ілюструє створення двох випадкових матриць Ml і М2 і потім їх множення:
Параметр inplace в функції множення забезпечує приміщення результату множення матриць на місце вихідної матриці Ml - улюблений прийом творців швидких матричних алгоритмів NAG. Оскільки матриці Ml і М2 за- -Даний як випадкові, то при повторенні цього прикладу результати, природно, будуть іншими, ніж наведені.
Наступний приклад ілюструє проведення добре відомої операції / LU-розкладання над матрицею М, створеної функцією Matrix:
Кінцевою метою більшості матричних операцій є рішення систем лінійних рівнянь. Для цього пакет LinearAlgebra пропонує безліч методів і засобів їх реалізації. Ми обмежимося простим прикладом одночасного вирішення відразу трьох систем рівнянь. Щоб не захаращувати книгу масивними виразами, обмежимося рішенням систем з двох лінійних рівнянь, матриця коефіцієнтів у яких одна, а вектори вільних членів різні. Нижче показаний приклад вирішення такої системи:
На цьому, з огляду на обмежений обсяг книги, ми завершуємо огляд пакета LmearAlgebra. Читач, пізнає або знає методи лінійної алгебри, може випробувати в роботі будь-які функції цього пакета самостійно або познайомитися з безліччю прикладів, розміщених в довідковій системі Maple 7. Можливості пакетів linalg і LinearAlgebra задовольнять найвибагливіших фахівців в цій області математики.
Інтеграція Maple 7 з MATLAB
Короткі відомості про MATLAB
Незважаючи на великі кошти лінійної алгебри (та й багато інших), наявні у системи Maple 7, є системи комп'ютерної математики, вирішальні деякі класи задач більш ефективно, і перш за все швидше. В області лінійної алгебри до таких систем, безумовно, відноситься система MATLAB, створена компанією Math Works, Inc. Її назва походить саме від слів MATrix LABoratory - матрична лабораторія.
MATLAB містить в своєму ядрі багато сотень матричних функцій і є однією з кращих матричних систем для персональних комп'ютерів. Вона реалізує найсучасніші алгоритми матричних операцій, включаючи, до речі, і алгоритми NAG. Однак головна перевага MATLAB - наявність безлічі додаткових пакетів як за класичними розділами математики, так і по самим новітнім, таким як нечітка логіка, нейронні мережі, ідентифікація систем, обробка сигналів і ін. Знаменитим став пакет моделювання систем і пристроїв Simulink, що включається в пакет поставки системи MATLAB. Останньою версією системи є MATLAB 6.0. У той же час не можна не відзначити, що MATLAB - одна з найбільш громіздких математичних систем. Інсталяція її повної версії займає близько 1,5 Гбайт дискового простору. Незважаючи на це, інтеграція різних математичних систем з даною системою, схоже, стає своєрідною модою. Така можливість передбачена і в системі Maple 7 за допомогою пакету Matlab.
Завантаження пакету розширення Matlab
Для завантаження пакета Matlab використовується команда:.
> With (Matlab);
[Chol, closelink, defined, del, dimensions, eig, evalM, fft, getvar, inv, Iu, ode45, openlink, qr, setvar, size, square, transpose]
Використання цієї команди веде до автоматичного запуску системи MATLAB (гарантується робота з версіями MATLAB до 5.3.1 включно) і встановленню необхідної об'єктного зв'язку між системами Maple 7 і MATLAB.
ПРИМІТКА
Як неважко помітити, даний пакет дає доступ всього до 18 функцій системи MATLAB (з багатьох сотень, наявних тільки в ядрі останньої системи). Таким чином, є всі підстави вважати, що можливості MATLAB в інтеграції з системою Maple 7 використовуються поки дуже слабо і носять рудиментарний характер. Чи варто заради цих функцій мати на комп'ютері величезну систему MATLAB, користувачі повинні вирішувати самі. Якщо відповідь позитивна, то, швидше за все, користувач вирішує той клас задач, для яких краще підходить MATLAB, і треба задуматися вже над тим, чи потрібен в цьому випадку Maple.
Типові матричні операції пакета розширення Matlab
Більшість функцій пакета Matlab (не плутайте з системою MATLAB, ім'я якої треба записувати прописними буквами) реалізують самі звичайні матричні операції, що і ілюструють наведені нижче приклади.
Задамо матрицю М у форматі Maple:
Нижче наведено приклади транспонування матриці, її інвертування, обчислення детермінанта і власних значень матриці:
Можна перевірити, чи є матриця квадратної:
Можна також перевірити, чи є дана матриця матрицею системи MATLAB:
Тут треба мати на увазі, що формати матриць в системах Maple і MATLAB різні. Виконаємо LU-перетворення матриці:
Таким чином, видно, що пакет Maple в даному випадку реалізує типові матричні операції, але засобами системи MATLAB. Остання відома відбувається автоматично при завантаженні пакета Matlab. Якщо система MATLAB не встановлена на вашому комп'ютері, то доступ до функцій пакета Matlab буде відсутній, a Maple 7 при спробі використання даних функцій буде видавати повідомлення про помилки.
Виділення сигналу на тлі шумів
Серед невеликого числа доступних функцій системи MATLAB в пакеті Matlab можна не виділити особливо функції швидкого прямого і зворотного перетворень Фур'є. В системі MATLAB ці функції реалізують найбільш ефективні алгоритми швидкого перетворення Фур'є (ШПФ), що забезпечують рішення великорозмірних завдань (наприклад, обробки сигналів, представлених векторами і матрицями великих розмірів) в десятки разів швидше, ніж при звичайних методах виконання перетворень Фур'є.
Покажемо можливість застосування БПФ на став класичним прикладі - виділення спектра корисного сигналу на тлі сильних перешкод. Задамо деякий двочастотний сигнал, який має 1500 точок відліку:
> Num: = 1500:
Time: = [seq (.03 * t. T = l..num)]:
data: = [seq ((3.6 * cos (Time [t]) + cos (6 * Time [t])), tl..num)]:
p1ots [pointp1ot] (zlp ((x, y) -> [x, y], Time, data), style = 1ine);
Графік сигналу представлений на рис. 15.1.
Мал. 15.1. Графік вихідного сигналу
Тепер за допомогою генератора випадкових чисел накладемо на цей сигнал сильний «шум» (слово «шум» взято в лапки, оскільки мова йде 6 математичному моделюванні шуму, а не про реальний шумі фізичної природи):
> Tol: = 10000:
r: = rand (0..to1):
noisyjlata: = [seq (r () / (tol) * data [t], t = l..num)]:
plots [pointp1ot] (zip ((x, y) -> [x, y], T1me, noisy_data), sty1e = 1ine);
Неважко помітити, що тепер форма сигналу настільки замаскована шумом (рис. 15.2), що можна лише насилу -догадиваться, що сигнал має періодичну складову малої амплітуди. Ця високочастотна складова сигналу прихована шумом.
Піддамо отриманий сигнал (у вигляді тимчасової залежності) прямого перетворення Фур'є, реалізованому функцією fft:
> Ft: = fft (noisy_data):
> VectorOptions (ft, datatype):
complex8
Ця операція переводить завдання з тимчасового уявлення сигналу в частотний, що дозволяє використовувати частотні методи аналізу сигналу. Виділимо, наприклад, дійсну і уявну частини елементів вектора ft і перевіримо його розмір:
Пакет аналізу лінійних функціональних систем LinearFunctionalSystems
Призначення пакету LinearFunctionalSystems
Пакет LinearFimctionalSystems містить набір функцій для вирішення завдань, пов'язаних з аналізом лінійних функціональних систем. Зазвичай такі системи описуються лінійними диференціальними рівняннями, що мають те чи інше рішення. Пакет LinearFunctionalSystems дозволяє провести тестування підготовленої системи, оцінити ряд її параметрів і отримати рішення одним з ряду методів.
Виклик всіх функцій пакета здійснюється командою:
> With (LinearFunctionalSystems):
[AreSameSolution, CanonicalSystem, ExtendSeries, Homogeneous System, IsSolution,
MatrixTriangularization, PolynomialSolution, Properties, RationalSolution,
SeriesSolution, UniversalDenominator]
Тестові функції пакета LinearFunctionalSystems
Перш ніж розглядати основні функції пакета, розглянемо дві тестові функції. Вони представлені такими формами записи:
IsSolution (sol, sys, vars) IsSolution (sol, A, b, x, case)
IsSolution (sol, A, x, case) AreSameSolutior (sol, soil)
У них: sol - тестоване рішення, sys - система функціональних рівнянь, х - незалежна змінна рішення, А і b - матриця і вектор з раціональними елементами, case - ім'я методу рішення ( 'differential', 'difference' або 'qdifference').
Функції рішення лінійних функціональних систем
Група основних функцій пакета LinearFunctionalSystems має ідентичний синтаксис і записується у вигляді:
name (sys, vars, [method])
або
name (A [.b], x, case, [method]}
Тут name - одне з наступних імен:
- PolynomialSolution - рішення в формі полінома;
- RationalSolution - рішення в формі раціонального вираження;
- SeriesSolution - рішення у вигляді ряду;
- UniversalDenominator - рішення з універсальним знаменником (і чисельником, рівним 1).
Система функціональних рівнянь задається або у вигляді повної системи sys зі списком змінних vars, або в матричному вигляді із завданням матриць коефіцієнтів, системи А і вектора вільних членів b (може бути відсутнім) із зазначенням незалежної змінної х і параметра case, що має значення 'differential', 'difference' або 'qdifference'. Параметр method, що задає метод EG-виключення, може мати значення 'quasimodular' або 'ordinary'.
допоміжні функції
Кілька допоміжних функцій пакета LinearFunctionalSystems представлено нижче:
- MatrixTriangularization (mat, m, n, x, It) - тріангуляція матриці mat розміру mxn із зазначенням типу It ( 'lead' або 'trail');
- CanonicalSystemCshift, sys. vars) або CanonicalSystemCshift, A [, b]. x, case) - повертає систему в канонічному вигляді (параметр shift задається як 'difference' або 'q - difference', призначення інших параметрів С9ответствует зазначеним вище для інших функцій);
- ExtendSeries (sol, deg) - розширює ряд рішення sol до розширеного ряду ступеня deg;
- HomogeneousSystemChoitio, sys, vars) іліHomogeneousSystemChomo, A [, b], x, case) - перетворює вихідну систему в однорідну з ім'ям homo.
- PropertiesCsys, vars) або Properties (A [. B]. X, case) - повертає основні властивості системи.
Приклади застосування пакета LinearFunctionalSystems
Нижче представлений ряд прикладів застосування пакета LinearFunctionalSystems, що ілюструють його можливості:
Безліч додаткових прикладів на аналіз і рішення лінійних функціональних систем можна знайти в довідці за функціями даного пакета.
Що нового ми дізналися?
У цьому уроці ми навчилися:
- Застосовувати основні операції та визначення лінійної алгебри.
- Використовувати пакет рішення задач лінійної алгебри linalg.
- Використовувати пакет лінійної алгебри LinearAlgebra з алгоритмами NAG.
- Здійснювати інтеграцію системи Maple 7 з матричної системою MATLAB.
- Використовувати деякі функції системи MATLAB при роботі в Maple 7.
- Застосовувати функції нового пакета LinearFunctionalSystems.
Чи знаєте Ви, що інформаційна компетентність - це інтегративне якість особистості, що представляє собою єдність мотиваційної, теоретичної і практичної готовності і здатності студента до здійснення інформаційної діяльності, заснованої на засвоєнні способів придбання знань з різних джерел інформації.
Що нового ми дізналися?