Записи с меткой «решение»

Пакет решения задач линейной алгебры linalg

Пакет решения задач линейной алгебры linalg
Состав пакета linalg
Несомненно, что уникальной возможностью системы Maple 15, как и других систем компьютерной алгебры, является возможность решения задач линейной алгебры в символьном (формульном, аналитическом) виде. Однако такое решение представляет скорее теоретический, чем практический интерес, поскольку даже при небольших размерах матриц (уже при 4-5 строках и столбцах) символьные результаты оказываются очень громоздкими и труднообозримыми. Они полезны только при решении специфических аналитических задач, например с разреженными матрицами, у которых большинство элементов имеют нулевые значения.
Поэтому разработчики Maple 15 были вынуждены реализовать в своей системе численные методы решения задач линейной алгебры, которые широко используются в основных сферах ее приложения — математическом моделировании систем и устройств, расчетах в электротехнике, механике, астрономии и т. д.
В ядро Maple 15, как отмечалось, введены очень скромные и минимально необходимые средства для решения задач линейной алгебры. Основной упор в их реализации сделан на подключаемые пакеты. Основным из них, унаследованным от предшествующих реализаций системы, является пакет решения задач линейной алгебры 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. далее…

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

Пакеты линейной алгебры и функциональных систем
 
Основные определения линейной алгебры
Прежде чем перейти к рассмотрению обширных возможностей пакетов Maple 15 по части решения задач линейной алгебры, рассмотрим краткие определения, относящиеся к ней.
Матрица (m х n) — прямоугольная двумерная таблица, содержащая m строк и n столбцов элементов, каждый из которых может быть представлен числом, константой, переменной, символьным или математическим выражением (расширительная трактовка матрицы).
Квадратная матрица — матрица, у которой число строк m равно числу столбцов n. Пример квадратной матрицы размера 3×3:

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

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

Транспонированная матрица:

Обратная матрица — это матрица М-1, которая, будучи умноженной на исходную квадратную матрицу М, дает единичную матрицу Е.
Ступенчатая форма матрицы соответствует условиям, когда первый ненулевой элемент в каждой строке есть 1 и первый ненулевой элемент каждой строки появляется справа от первого ненулевого элемента в предыдущей строке, то есть все элементы ниже первого ненулевого в строке — нули.
Диагональ матрицы — расположенные диагонально элементы Ai,i  матрицы А. В приведенной ниже матрице элементы диагонали представлены заглавными буквами:

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

где M1<j> — определитель матрицы порядка n — 1, полученной из матрицы А вычеркиванием первой строки и j-гo столбца. далее…

Пакет для работы с суммами sumtools

Пакет для работы с суммами sumtools
Состав пакета sumtools
Этот инструментальный пакет предназначен для работы со специальными суммами. Он содержит указанные ниже функции:
> with(suintools);
[Hypersum, Sumtohyper, extended_gosper, gosper, hyperrecursion, hypersum, hyperterm, simpcomb, sumrecursion, sumtohyper]
Назначение функций данного пакета перечислено ниже:

  •  hypersum(U, L, z, n) и Hypersum(U, L, z, n) — вычисление гиперсумм;
  •  sumtohyper(f, k) и Sumtohyper(f, k) — преобразование сумм в гиперсуммы;
  •  extended_gosper(f, k), extended_gosper(f, k=m..n) и extended_gosper(f, k, j) — реализация расширенного алгоритма Госпера;
  •  gosper(f, k) и gosper(f, k=m..n) — реализация алгоритма Госпера;
  •  hyperrecursion(U, L, z, s(n)) — реализация гиперрекурсионного алгоритма;
  •  hyperterm(U, L, z, k) и Hyperterm(U, L,z, k) — ввод гипергеометрического терма.

Работа с пакетом sumtools
Приведем примеры на применение этих функций:
 
Из этих примеров применение функций данного пакета достаточно очевидно.
Пакет реализации степенных разложений powseries
Состав пакета powseries
Степенные разложения часто используются в математических расчетах для приближенного представления разнообразных функций и обеспечения единообразия такого представления. В пакете powseries сосредоточены расширенные средства по реализации таких разложений. Они представлены 22 функциями:
> with(powseries);
[compose, evalpow, inverse, multconst, multiply, negative, pawadd, powcos, powcreate, powdijff, powexp, powint, powlog, powpoly, powsin, powsolve, powsqrt, quotient, reversion, subtract, template, tpsform ]
Ниже представлено определение этих функций:

  •  compose(а,b) — объединяет ряды а и b;
  •  evalpow(expr) — вычисляет выражение ехрr и возвращает его в виде ряда;
  •  inverse(р) — инвертирует ряд р;
  •  mu1tconst(p,const) — умножает ряд р на константу const; ,
  •  multiply(a,b) — умножает ряд а на ряд b;
  •  negative(p) — возвращает аддитивный, обратный по отношению к р ряд;
  •  powadd(a,b,…) — складывает ряды а, b, …;
  •  powcreate(expr) — создает ряд для выражения ехрr;
  •  powpoly(pol ,var) — создает ряд для полинома pol по переменной van;
  •  powsolve(sys) — создает ряд для решения дифференциальных уравнений sys;
  •  quotient(a,b) — возвращает частное для а и b в виде ряда;
  • reversion(a) — дает обратное к композиции разложение ряда а;
  •  subtract(а,b) — дает разность рядов а и b.

В выражении ехрr могут использоваться операторы +, -, *, / и  ^. С ними могут комбинироваться встроенные функции и функции пользователя, например /(g). Кроме того, могут использоваться следующие функции:

Powexp

powi nv

powlog

powneg

powrev

Powdiff

powi nt

powquo

powsub

powcos

Powtan

powsec

powcsc

powcot

powsinh

Powcosh

powtanh

powsech

powcsch

powcot h.

Powsqrt

powadd

multiply

 

Примеры применения пакета powseries
Назначение большинства этих функций очевидно из их названий — они возвращают соответствующую функцию (указанную после слова pow в имени) в виде разложения в ряд или полинома. Например, powexp раскладывает выражения с экспоненциальными функциями в ряд.
Получаемые функциями ряды представляются в специальном формате. Поэтому для их применения в обычном виде необходимо использовать функцию tpsform в следующих видах:

  •  tpsform(p, var, order) — преобразует ряд р в обычную форму с заданием порядка order;
  •  tpsform(p, var) — преобразует ряд р в обычную форму с порядком, заданным переменной Order.

Здесь р — имя степенного ряда, var.— переменная, относительно которой записан ряд, order — порядок ряда. Если параметр order не указан, используется значение глобальной переменной Order. Ниже даны примеры, иллюстрирующие технику работы со степенными разложениями:

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

далее…

Пакет combstruct

Пакет combstruct
Еще девять функций, относящихся к структурам комбинаторики, содержит пакет combstruct:
> with(combstruct):
[allstructs, count, draw,finished, gfeqns, gfseries, gfsolve, iterstritcts, nextstruct]
Эти функции служат для создания случайно однородных объектов, принадлежащих заданному комбинаторному классу. Ограничимся приведением примеров применения этих функций:
> alltructs(Subset({one,two}));
{{ },{one, two}, {two}, {one}}
 > anstructs(Permutation([x,y,z]),size=2):
[[x,y],[x,z],[y,x],[y,z],[z,x],[z,y]] 
> count(Subset({l,2,3}));

> draw(Combiination(5),size=4);
{1,3,4,5}
> count(Permutation([a,a,b])): .
3
> 1t :=iterstructs(Permutation([a,a,b]),size=2);
it := table([finished = false, nextvalue = (pmc() … endproc )])
 > draw(Partition(9));
[2,2,2,3]
 > allstructs(Composition(3), size=2):
[[2,l],[l,2]]
Для более полного знакомства с этими специфическими функциями обратитесь к справочной системе.
Пакет финансово-экономических функций finance
Пакет финансово-экономических расчетов открывается командой:
 > with(finance)
[amortization, annuity, blackscholes, cashflows, effectiverate,futurevalue, growingannuity, growingperpetuity, levelcoupon, perpetuity, presentvalue, yieldtomaturity]
Этот пакет представлен рядом указанных выше функций в двух формах:
function(args)
finance[function](args).
Благодаря правилам задания аргументов можно реализовать практически все известные финансово-экономические расчеты, такие как амортизация, накопления и платежи по вкладам и т. д. В свете задач рыночной экономики эти функции полезны для приверженцев решения всего на свете без выхода из оболочки Maple. Все же надо отметить, что малозаметные тонкости в определении финансово-экономических функций затрудняют их применение. далее…

Включение и выключение сообщений об ошибках

Включение и выключение сообщений об ошибках
Опытный пользователь нередко способен опознать ошибки и без слишком назойливых сообщений о них. Например, он может судить о своей промашке просто по отказу системы выполнить вычисление и по повтору выражения в строке вывода (см. примеры выше). Кроме того, часть сообщений носит предупреждающий характер и на первых порах может игнорироваться.
Для отключения сообщений об ошибках служит ключ
Off[Function::tag]
Например, отключим сообщение об ошибках у функции Ехр:
Off[Exp::argx]
Ехр[2,2]
Ехр[2,2]
Ехр[2]
Е2
N[Exp[2]]
7.38906
Для включения сообщения об ошибках используется ключ
On[Function::tag]
Например, для возобновления выдачи ошибок у функции Ехр надо исполнить команду
On[Exp::argx]
К сожалению, диагностика ошибок не способна опознать ошибки, имеющие формально правильный синтаксис. Чаще всего эти ошибки связаны с неверным описанием алгоритма вычислений. Например, если пользователь в математическом выражении вместо Sin [х] записал Cos [х], то эта грубая ошибка никак не будет распознана системой, поскольку синтаксически вызов функции Cos [х] записан безупречно. Часто пользователи путают идентификаторы переменных. далее…

Работа с объектами

Работа с объектами
 
В этом разделе мы познакомимся с понятием объектов и научимся работать с ними. Объект — понятие обобщенное. Под ним может подразумеваться оператор или функция, рисунок (графический объект) и т. д. Объекты могут иметь ряд свойств, определяющих их назначение и поведение.
Получение данных об объектах
Различные объекты системы будут более подробно описаны в дальнейшем по мере знакомства с системой. Полный список объектов, заданных в ядре системы, легко получить, используя команду ? * (ниже приведены лишь начало и конец этого списка):
?*
Abort
AbortProtect
Above
Abs
AbsoluteDashing
AbsolutePointSize
$Version
$VersionNumber
Можно также получить список всех определений на заданную букву, используя команду ?S*, где S — любая буква латинского алфавита. Ниже дан пример вывода всех определений ядра на букву U:
?U*
UnAlias Unevaluated Update
Underflow Uninstall UpperCaseQ
Underoverscript Union UpSet
UnderoverscriptBox Unique UpSetDelayed
Underscript Unprotect Upvalues
UnderscriptBox UnsameQ Using
Unequal Unset
Аналогичные возможности предоставляет функция Names ["S"], например, Names ["А*"] дает список всех ключевых слов, начинающихся с символа «А». Наконец, командой ?Name можно вывести справку по любому определению с именем Name. Например, после выполнения команды
?Abs
Abs[z] gives the absolute
value of the real or complex number z.
становится ясно, что идентификатор Abs задает функцию Abs [ z ] для вычисления абсолютного значения комплексного числа.
С помощью выражения ?Name можно проверить, является имя объекта Name уникальным или оно уже использовано в системе:
?sin
Information::notfound : Symbol sin not found. далее…