-
Начиная с этого урока, мы переходим к изучению стандартных пакетов расширения (Standard Add-on Packages), которые встроены в системы Mathematica 3/4. Они не требуют отдельной инсталляции, но перед использованием их средств пакеты надо объявлять.
-
Пакет расширения Algebra содержит ряд новых функций для работы с неравенствами, ограниченными полями и полиномами. Для доступа сразу ко всем функциям пакета используется команда <<Algebra'. | Загрузка отдельных функций показана в примерах использования этого пакета, описанных ниже.
-
Подпакет Relm обеспечивает переназначение функций комплексной переменной для более корректной их работы: | <<Algebra`ReIm` | Re[l/x+l/y] | Re[x]/(Im[x]2+Re[x]2)+ Re[y]/(Iim[y]2+Re[y]2) | Re[(z + I)^3 + Exp[I z]] | E[mz] Cos[Re[z]] -2 (1+ Im[z])2Re[z] + | Re[z] (-(1+ Im[z])2+Re[z]2) | Im[x] ^= 0;
-
Следующие функции подпакета Rootlsotation позволяют оценивать интервалы изоляции для действительных и комплексных корней полиномов: | CountRoots [poly, {x,m1,m2} ] – возвращает число корней полинома poly от переменной х в комплексном интервале {m1, m2 };
-
Если конечные поля – понятие достаточно экзотическое, то полиномы встреча – ются сплошь и рядом во многих математических и научно-технических расчетах. В пакете расширения Algebra определен ряд новых операций над полиномами. Начнем их рассмотрение с функции PolynomialExtendedGCD:
-
Подпакет Horner в системе Mathematica 4 реализует хорошо известную схему вычисления полиномов – схему Горнера. При ней операции возведения в степень заменяются операциями умножения. Для этого служит функция Horner: | Horner [poly] – устанавливает полином poly в форму Горнера;
-
Пакет расширения Calculus содержит представительный набор функций для решения дифференциальных уравнений, задания функций единичного скачка и импульса, выполнения операций с векторами, преобразований Фурье и Лапласа, выполнения спектрального анализа и синтеза, расширенного вычисления пределов и проведения аппроксимаций аналитических функций. Для открытия пакета используется команда <<Calculus`.
-
В подпакете DiracDelta системы Mathematica 3 задано определение двух полезных функций Дирака: | UnitStep [х] – возвращает функцию с единичным скачком при х = 0 (дает значение 0 при х < 0 и 1 при х > 1);
-
Подпакет Limit не создает новых функций.
-
Подпакет VectorAnalysis содержит множество функций, используемых при выполнении векторного анализа. Здесь надо иметь в виду, что речь идет не о векторах как представителях одномерных массивов, которые рассматривались ранее.
-
Помимо функций для задания и преобразования систем координат подпакет Vector Analysis содержит ряд функций собственно векторного анализа: | DotProduct [v1, v2] – возвращает скалярное произведение векторов v1 и v2, заданных в текущей системе координат;
-
Подпакет VariationaLMethods содержит функции для реализации вариационных методов. Напомним, что вариационные методы заменяют минимизацию функционала, заданного на некотором бесконечномерном линейном пространстве, задачами его минимизации на последовательности конечномерных подпространств.
-
Пакет DiscreteMath задает набор функций дискретной математики. Это прежде всего функции комбинаторики и работы с графами (более 230 функций). Мы вынуждены рассмотреть их только выборочно. | Несколько функций комбинаторики (Factorial, Factorial2, Binomial, Multinomial, Pochhammer и Fibonacci) могут использоваться без загрузки пакетов расширения.
-
Mathematica имеет самые обширные возможности решения задач, связанных с графами. Задание графов и манипуляции с ними также включены в пакет комбинаторики. Они представлены четырьмя группами функций. | Представление графов | AddEdge | AddVertex | Breadth'FirstTraversal | ChangeEdges
-
В подпакете ComputationalGeometry заданы следующие функции, относящиеся к геометрическим поверхностям: | ConvexHull [ { {xl, yl…}, {х2, у2,…},…] – вычисляет выпуклость оболочки в точках плоскости; | DelaunayTriangulation[ xл,йл&хеллип;}, {х2, у2,&хеллип;},&хеллип;] &ндасх;
-
В подпакете KroneckerDelta системы Mathematica 3 заданы дискретные функции единичного скачка и единичного импульса: | DiscreteStep [n] – возвращает единичный скачок при целом n=0; | DiscreteStep [n1, n2,…] – функция многомерного единичного скачка;
-
В подпакете Permutations определен ряд функций дискретных перестановок: | RandomPermutation [n] – случайные перестановки из n элементов; | Ordering [list] – дает перестановки в установленном списком list порядке; | ToCycles [perm] – дает циклическую декомпозицию для списка list;
-
Подпакет Tree содержит функции создания и применения древовидных структур, именуемых деревьями. Вот эти функции: | MakeTree [list] – создает дерево по информации, представленной в списке list; | TreeFind [tree, x] – возвращает позицию наименьшего элемента, превосходящего х в списке list, представляющем дерево.
-
В этом разделе описан пакет Geometry, содержащий ряд функций, полезных при выполнении геометрических расчетов. В основном это функции, относящиеся к построению регулярных полигонов на плоскости и полиэдров в пространстве.
-
Для задания поворота плоских фигур на заданный угол в подпакете Rotations заданы следующие функции: | RotationMatrix2D[theta] – дает матрицу для поворота на угол theta в двух измерениях; | Rotate2D [vec, theta] – поворачивает вектор vec по часовой стрелке на угол theta;
-
Пакет расширения LinearAlgebra добавляет ряд новых функций, полезных при решении сложных задач линейной алгебры. | Подпакет Cholesky содержит единственную функцию HoleskyDecomposition [m], которая вычисляет декомпозицию (факторизацию, разложение) Холесского для симметричной положительно определенной матрицы т.
-
Подпакет MatrixManipulation добавляет к матричным функциям ядра системы Маthematica ряд новых функций. Начнем с функций объединения матриц: | AppendColumns [m1,m2,…] – объединяет по столбцам матрицы m1,m2,…; | AppendRows [m1,m2,…] – объединяет по строкам матрицы m1,m2,…;
-
В подпакете ортогонализации Ortogonalization имеются следующие функции: | GramSchmidt [ {v1, v2,…} ] – создает ортогональное множество на основе списка векторов v1, v2,…; | Normalize [vect] – возвращает нормированный вектор vect;
-
Мы уже описывали уникальные возможности систем Mathematica 3/4 в области обработки чисел и численных вычислений. Эти возможности существенно расширяет пакет NumberTheory, содержащий функции, реализующие алгоритмы теории чисел. Данный раздел посвящен знакомству с этим пакетом.
-
В подпакете NumberTheoryFunctions имеется ряд функций, относящихся к теории чисел: | SquareFreeQ[n] – дает True, если n не имеет квадратичного фактора, и False в ином случае; | NextPrime [n] – дает наименьшее простое число, превосходящее n;
-
В подпакете PrimeQ в дополнение к функции ядра PrimeQ [n] имеется ряд функций для работы с простыми числами: | ProvablePrimeQ [n] – возвращает True, если п проверено на простоту, и False в ином случае; | PrimeQCertif icate [n] – возвращает сертификат о том, что n– простое или композитное число;
-
В подпакете Ramanujan определены следующие функции: | RamanujanTau [n] – n-й коэффициент ряда Рамануджана т-Дирйхле (т n ); | RamanujanTauGeneratingFunction [z] – производящая функция ряда Рамануджана т-Дирихле; | RamanujanTauDirichletSeries [s] – ряд Рамануджана т-Дирихле f(s);
-
Подпакет Recognize содержит определение одноименной с ним функции в двух формах: | Recognize [x,n,t] – находит полином переменной t степени, большей п, такой, что х является его корнем;
-
Пакет расширения NumericalMath содержит множество полезных функций для тех, кто имеет дело с численными расчетами. В их числе функции для выполнения высокоточных аппроксимаций рациональными функциями, численного интегрирования и дифференцирования, вычисления пределов функций, решения уравнений, разложения в ряд и т. д. Ниже описано подавляющее большинство функций этого расширения.
-
В подпакете BesselZeros определены функции, дающие список аргументов функций Бесселя в их первых п нулевых точках: BesselJZeros [mu, n], Bessel-YZeros[mu,n], BesselJPrimeZeros[mu,n], BesselYPrimeZeros[mu,n] и др.
-
Иногда важно не найти приближенное значение корня, а уточнить интервал, в котором он находится. В подпакете IntervalRoots для этого используется ряд известных методов, реализованных следующими функциями:
-
Встроенная в ядро функция NIntegrate вычисляет определенные интегралы при известной подынтегральной функции. Однако нередко, например при экспериментах, такая функция задается таблицей или списком значений.
-
В подпакете NLimit определена функция: | Nlimit[expr, x > x0] | Для численного вычисления пределов выражений ехрг (см. примеры ниже): | <<NumericalMath`NLimit` | NLimit[Zeta[s] -1/(s-1), s > 1] | 0.577216 | N[EulerGamma] | 0.577216 | С помощью команды Options [NLimit] можно просмотреть опции, которые используются функцией NLimit по умолчанию.
-
В подпакете NResidue имеется функция вычисления остатка NResidue [expr, {x, x0} ] в точке х=х0: | << NumericalMath`NResidue` | NResidue[1/z, {z, 0}] | 1. + 6.35614x 10-18 I | Residue[f, {z, 1.7}] | 0 | NResidue[f, {z, 1.7}] | 0.259067-1.9353x10-17I | l/((z+.2+.5 I)(z+.2-0.5 I)) / .z > 1.7 | 0.259067 + 0.
-
Функция NIntegrate, имеющаяся в ядре системы Mathematica, реализует метод интегрирования Гаусса-Кронрода. Еще одним известным методом интегрирования является метод Ньютона-Котесса, сводящий интегрирование к вычислению взвешенных ординат функции в равномерно расположенных точках оси абсцисс.