Как задать матрицу в maple

REDMOND

Пакет аналитических вычислений Maple , страница 3

<имя переменной>, <выражение2>, <последовательность операторов> — имеют равносильные определения, предложенные в первом формате конструкции.

<выражение1> — множество значений, которые принимает переменная.

Пример 1.10. Сумма элементов из множества <1, x, y, z 2 , 5­>

Не стоит думать, что вышеперечисленными базисными конструкциями языка возможности Maple ограничиваются. Программирование в среде Maple также предусматривает чтение и запись данных в файл, создание собственных процедур и функций, а затем помещение их в собственную библиотеку (пакет). В случае возникновения ошибок в исходном коде можно воспользоваться встроенным отладчиком. В случае надобности, полученный исходный код можно перекодировать на распространённые языки Си и Фортран. И хотя распространенность второго явно преувеличена, это, в общем и целом, делает язык программирования Maple универсальным инструментом, который подходит для создания как простых, так и действительно сложных и объёмных вычислительных программ, легко транслируемых на другие языки.

Система Maple сама по себе является эффективным центром управления вычислениями. Но всё же большинство функций загружается не при запуске программы, а при инициализации так называемых пакетов. Эти пакеты содержат в себе группу дополнительных возможностей (команд), реализованных посредством функций и процедур, и легко читаемых Maple. Это сделано не только для экономии памяти, но и для того чтобы функции из разных разделов математики не смешивались между собой. Удобная специализация и структура пакетов избавляет вашу работу от постоянных поисков нужной функции, среди того огромного количества функций присутствующих в Maple (а их, как уже упоминалось, больше двух тысяч).

Например, чтобы загрузить функции для задач линейной алгебры и векторного исчисления, введите следующую команду:

Пример 1.11. Подключение пакета LinearAlgebra

Для того чтобы отобразить список, загружаемых при этом функций, завершите команду точкой с запятой. Таким же образом инициализируются и все другие пакеты.

Особого внимания за свои возможности заслуживает пакет Student. Как не трудно догадаться из названия, он предназначен для студентов-математиков. Он содержит в себе основные пакеты для вычислений, такие как Calculus1, VectorCalculus. А также пакет LinearAlgebra, которому в основном и посвящена эта книга.

Нами были выбраны пакеты LinearAlgebra и linalg для разработки алгоритмов работы над матрицами. Эти пакеты позволяет выполнять все основные действия над матрицами. В пакете LinearAlgebra, в отличие от устаревшего уже linalg, была сделана ставка на использование давно апро­бированных быстрых алгоритмов линейной алгебры, предложенных созда­телями Number Algorithm Group (NAG). Как ни парадоксально, но всё же не все функции из linalg были перенесены в пакет LinearAlgebra, поэтому списывать его со счетов не стоит. В дальнейшем мы будем обращаться к этим функциям, но предварительно обговаривая, что они находятся только в пакете linalg.

При решении сложных задач Вам вероятнее всего потребуются новые специфические функции, которые Вы и найдете в других пакетах. В приложении 3 предоставлен список всех пакетов системы Maple, включая новые пакеты появившиеся только в 11 версии. Для их более детального рассмотрения советуем обратиться к приведённой в конце книги литературе.

На этом вводная часть заканчивается и мы приступаем к изучению курса матричного анализа. При соответствующей математической подготовке приведённых выше фундаментальных знаний о Maple должно хватить для самостоятельного изучения всех пакетов этой системы. Мы же в нашем пособии остановимся только на пакетах LinearAlgebra и linalg, но сделаем это максимально подробно.

Глава 2

Матрицы и действия над ними

2.1 Основные понятия теории матриц

Определение 2.1. Матрица (лат. matrix — источник, начало) — прямоугольная таблица, образованная из чисел (обычно действительных или комплексных), состоящая из m строк и n столбцов.

Обозначение:

Числа aij (;), составляющие дан­ную матрицу, называются ее элементами. Здесь первый индекс i обозначает номер строки элемента, а второй j— номер его столбца. Причем говорят, что матрица A имеет тип mn.

Для матрицы A часто употребляется сокращенная запись:

A = [ aij ] или A = [ aij ]m,n, где aij (;).

Пример 2.1. Ввод матрицы в Maple двумя способами

Если т = п, то матрица называется квадратной порядка п. Если же т ≠ п, то матрица называется прямоугольной. В частности, матрица типа 1n называется вектором-строкой, а матрица типа m1 — вектором-столбцом. Число (скаляр) можно рассматривать как матрицу типа 11.

Определение 2.2. Диагональной называется квадратная матрица вида:

Сокращённая запись: B = [ ]

Если в диагональной матрице все = 1 (), то такая матрица называется единичной и обозначается буквой Е.

Пример 2.2. Ввод единичной матрицы

2.2 Действия над матрицами

Определение 2.3. Cуммой (разностью) двух матриц A = [ аij ] и B = [ bij ] одинакового типа называется матрица C= [ cij ] того же типа, элементы которой cij= аij+ bij(cij= аij bij).

Пример 2.3. Разность между матрицей A из примера 2.1 и матрицей B из примера 2.2

Непосредственно из предыдущего определения вытекают сле­дующие ее свойства сложения матриц:

1) A + (B + C) = (A + B) + C − ассоциативность.

2) A + B = B + A − коммутативность.

3) A + 0 = A − свойство нуля.

Определение 2.4. Произведением матрицыA = [ аij]на число α (или произведе­нием числа α на матрицу A) называется матрица, элементы которой получены умножением всех элементов матрицы A на число α.

Пример 2.4. Найти произведение матрицы A на число α, где

Пакеты линейной алгебры и функциональных систем

Прежде чем перейти к рассмотрению обширных возможностей пакетов Maple 7 по части решения задач линейной алгебры, рассмотрим краткие определения, относящиеся к ней.

Матрица (m х n) — прямоугольная двумерная таблица, содержащая m строк и n столбцов элементов, каждый из которых может быть представлен числом, константой, переменной, символьным или математическим выражением (расширительная трактовка матрицы).

Квадратная матрица — матрица, у которой число строк m равно числу столбцов n . Пример квадратной матрицы размера 3×3:

Сингулярная (вырожденная) матрица — квадратная матрица, у которой детерминант (определитель) равен 0. Такая матрица обычно не упрощается при символьных вычислениях. Линейные уравнения с почти сингулярными матрицами могут давать большие погрешности при решении.

Единичная матрица — это квадратная матрица, у которой диагональные элементы равны 1, а остальные элементы равны 0. Ниже представлена единичная матрица размера 4×4:

Сингулярные значения матрицы А — квадратные корни из собственных значений матрицы А Т =А, где А т — транспонированная матрица А (см. ее определение ниже);Транспонированная матрица — матрица, у которой .столбцы и строки меняются . местами, то есть элементы транспонированной матрицы удовлетворяют условию A T (i,j)=A(j,i). Приведем простой пример. Исходная матрица:

Обратная матрица — это матрица М -1 , которая, будучи умноженной на исходную квадратную матрицу М, дает единичную матрицу Е.

Ступенчатая форма матрицы соответствует условиям, когда первый ненулевой элемент в каждой строке есть 1 и первый ненулевой элемент каждой строки появляется справа от первого ненулевого элемента в предыдущей строке, то есть все элементы ниже первого ненулевого в строке — нули.

Диагональ матрицы — расположенные диагонально элементы A i,i матрицы А. В приведенной ниже матрице элементы диагонали представлены заглавными буквами:

Обычно указанную диагональ называют главной диагональю — для матрицы А, приведенной выше, это диагональ с элементами А, Е и L. Иногда вводят понятия под диагоналей (элементы d и k) и над диагоналей (элементы b и f). Матрица, все элементы которой, расположенные кроме как на диагонали, под диагонали и над диагонали, равны нулю, называется ленточной.

Ранг матрицы — наибольший из порядков отличных от нуля миноров квадратной матрицы.

След матрицы — сумма диагональных элементов матрицы.

Определитель матрицы — это многочлен от элементов квадратной матрицы, каждый член которого является произведением n элементов, взятых по одному из каждой строки и каждого столбца со знаком произведения, заданным четностью перестановок:

где M 1 <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 E-M);
  • 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) возвращает вектор решения х системы линейных уравнений L-x=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 :

После исполнения этого фрагмента документа диалог с пользователем имеет следующий вид:

Основные функции для задания векторов и матриц

В библиотечном файле 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:

infolevel LinearAlgebra :=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 и затем их умножение:

REDMOND

Параметр 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 точек отсчета:

График сигнала представлен на рис. 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 и проверим его размер:

Пакет анализа линейных функциональных систем 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 — одно из следующих имен:

  • 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 , иллюстрирующих его возможности:

Множество дополнительных примеров на анализ и решение линейных функциональных систем можно найти в справке по функциям данного пакета.

Лекция 10. Пакеты для математической обработки данных.Maple. Матрицы и графики

Использование пакета для решения задач экономического профиля.

Работа с массивами

Основная часть команд для решения задач линейной алгебры содержится в библиотеке linalg. Поэтому перед решением задач с матрицами и векторами следует загрузить эту библиотеку командойwith(linalg).

Способы задания векторов

Для определения вектора в Mapleиспользуется командаvector([x1,x2,…,xn]),где в квадратных скобках через запятую указываются координаты вектора. Например:

Координату уже определенного вектора xможно получить в строке вывода, если ввести командуx[i], гдеi номер координаты. Например, первую координату заданного в предыдущем примере вектора можно вывести так:

Сложение векторов

Сложить два вектора aиbможно с помощью двух команд:

2) matadd(a,b).

Скалярное, векторное произведение векторов и угол между векторами

Скалярное произведение двух векторов вычисляется командойdotprod(a,b).

Векторное произведение двух векторов вычисляется командойcrossprod(a,b).

Угол между двумя векторами aиbвычисляется с помощью командыangle(a,b).

Норма вектора

Норму (длину) вектора , которая равна, можно вычислить с помощью командыnorm(а,2).

Можно нормировать вектор ас помощью командыnormalize(a),в результате выполнения которой будет получен вектор единичной длины.

1. Даны два вектора: и. Найтии угол междуaиb. Для решения этой задачи наберите:

2. Найти векторное произведение , а затем скалярное произведение, где,.

3. Найти норму вектора .

> restart; with(linalg):

Определение матрицы

Для определения матрицы в Maple можно использовать командуmatrix(n, m, [[a11,a12,…,a1n], [a21,a22,…,a2m],…, [an1,an2,…,anm]]),гдеn число строк,m– число столбцов в матрице. Эти числа задавать необязательно, а достаточно перечислить элементы матрицы построчно в квадратных скобках через запятую. Например:

В Maple матрицы специального вида можно генерировать с помощью дополнительных команд. В частности диагональную матрицу можно получить командой diag. Например:

> J:=diag(1,2,3);

Генерировать матрицу можно с помощью функции f(i, j) от переменных i, j – индексов матрицы: matrix(n, m, f), где где n — число строк, m – число столбцов. Например:

Число строк в матрице А можно определить с помощью команды rowdim(A), а число столбцов – с помощью команды coldim(A).

Арифметические операции с матрицами

Сложение двух матриц одинаковой размерности осуществляется теми же командами, что и сложение векторов: evalm(A+B) или matadd(A,B). Произведение двух матриц может быть найдено с помощью двух команд:

В качестве второго аргумента в командах, вычисляющих произведение, можно указывать вектор, например:

Команда evalm позволяет также прибавлять к матрице число и умножать матрицу на число. Например:

Определители, миноры и алгебраические дополнения. Ранг и след матрицы.

Определитель матрицы А вычисляется командой det(A). Команда minor(A,i,j) возвращает матрицу, полученную из исходной матрицы А вычеркиванием i-ой строки и j-ого столбца. Минор Mij элемента aij матрицы А можно вычислить командой minor(A,i,j). Ранг матрицы А вычисляется командой rank(A). След матрицы А, равный сумме ее диагональных элементов, вычисляется командой trace(A).

> trace(A);

Обратная и транспонированная матрицы

Обратную матрицу А 1 , такую что А 1 А=АА 1 =Е, где Е  единичная матрица, можно вычислить двумя способами:

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

REDMOND

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *