Математические пакеты расширения Старательно выполнил: Бахитов Ф.А.

Презентация:



Advertisements
Похожие презентации
Большая часть классического численного анализа основывается на приближении многочленами, так как с ними легко работать. Однако для многих целей используются.
Advertisements

Лекция 2 – Идентификация закона распределения вероятностей одномерной случайной величины 2.1. Основные определения 2.2. Этапы обработки данных одномерной.
Модель - случайная величина. Случайная величина (СВ) - это величина, которая в результате опыта может принять то или иное значение, причем заранее не.
Л АБОРАТОРНАЯ РАБОТА 6 Тема: Численные методы решения задачи Коши для обыкновенных дифференциальных уравнений.
Предел функции Лекция 1. Ведение в Математический анализ – часть математики, в которой функции и их обобщения изучаются с помощью пределов. § Понятие.
Параметрическое представление плоских и пространственных кривых При параметрическом задании кривая представляется векторной функцией r 1, r 2, r 3 - радиус.
Численные методы линейной алгебры. Методы решений нелинейных уравнений и систем. Лекция 3:
Применение численных методов при моделировании химико-технологических процессов.
Функция. Основные понятия. Понятие функции Основные характеристики функции Основные элементарные функции Сложная функция Элементарные функции Алгебраические.
Математическая модель и численные методы. Интерполяционный полиномы Лекция 1:
ИНТЕРПОЛЯЦИЯ И АППРОКСИМАЦИЯ Кафедра Информационных технологий и управляющих систем Предмет «Вычислительные методы и их применение в ЭВМ» Лекция Доцент.
Методы обработки экспериментальных данных. Методы обработки экспериментальных данных: 1. Интерполирование 2. Метод Лагранжа.
Выполнил студент : Санкт - Петербург 2012 Министерство образования Российской Федерации Санкт - Петербургский государственный архитектурно - строительный.
ЛЕКЦИЯ Приближенное решение обыкновенных дифференциальных уравнений: Метод Эйлера.
Решение задачи диффузии, зависящей от времени. Рассмотрим простейшее уравнение в частных производных параболического типа, описывающее процесс диффузии.
Презентация по ТЭЦ Презентация по ТЭЦ. Элементы Фурье-оптики Математическое содержание метода Фурье сводится к представлению произвольных функций в виде.
Лабораторная работа 6 Обработка результатов эксперимента в MathCad.
Классификация сигналов Под сигналом обычно понимают величину, отражающую состояние физической системы. Поэтому естественно рассматривать сигналы как функции,
Л АБОРАТОРНАЯ РАБОТА 5 Тема: Численное интегрирование Тема: Численное интегрирование.
Решение нелинейных уравнений. Выбор подходящего метода для решения уравнений зависит от характера рассматриваемой задачи. Задачи, сводящиеся к решению.
Транксрипт:

Математические пакеты расширения Старательно выполнил: Бахитов Ф.А.

Математические пакеты расширения Пакет алгебраических функций Algebra Пакет вычислительных функций Calculus Пакет дискретной математики DiscreteMath Геометрические расчеты пакет Geometry Линейная алгебра пакет LinearAlgebra Расширение в теории чисел пакет NumberTheory Численные расчеты пакет NumericalMath Начиная с этого урока, мы переходим к изучению стандартных пакетов расширения (Standard Add-on Packages), которые встроены в системы Mathematica 3/4. Они не требуют отдельной инсталляции, но перед использованием их средств пакеты надо объявлять. Стандартные пакеты расширений содержат примерно столько же дополнительных средств, сколько их содержится в ядре, то есть тоже порядка тысячи. Применение пакетов расширения особенно эффективно, если оно производится достаточно опытными пользователями.

Общие замечания по пакетам расширения Пакеты расширения системы Mathematica (Add-ons) являются наборами файлов с расширением.т, написанными на языке программирования системы и объединенными под именами соответствующих пакетов. Пакеты добавляют в систему ряд функций, которые отсутствуют в ядре системы. Они могут модифицироваться и создаваться пользователями, что обеспечивает легкую адаптацию системы под задачи конкретного пользователя. Применение пакетов имеет три основные особенности: необходимо предварительно объявлять загрузку пакета или отдельных его частей под пакетов или функций; скорость вычислений для функций пакетов несколько ниже, чем для функций ядра; модификация функций пакетов пользователем может нарушить программную совместимость, что не позволит работать с ними в стандартной системе Mathematica и затруднит обмен документами. В системе Mathematica 3 (и особенно в Mathematica 4) проведена тщательная оптимизация ядра, что позволило перенести часть апробированных функций из пакетов расширений в ядро системы и тем самым существенно повысить скорость их выполнения. Однако пакеты расширения по-прежнему относятся к важным средствам дополнения и модернизации системы. Некоторые функции вызываются из пакетов автоматически они описаны ранее как средства ядра системы Mathematica 4. Следует отметить, что систематизация пакетов расширения по содержащимся в них функциям не доведена до совершенства. Например, функции регрессии разбросаны по ряду пакетов расширения. По мере возможности этот недостаток в данной книге устранен.

Пакет алгебраических функций Algebra Решение неравенств Пакет расширения Algebra содержит ряд новых функций для работы с неравенствами, ограниченными полями и полиномами. Для доступа сразу ко всем функциям пакета используется команда «Algebra`. Загрузка отдельных функций показана в примерах использования этого пакета, описанных ниже. До сих пор мы сталкивались с решениями уравнений, представленных равенствами. Пакет Algebra дает важное дополнение в виде функций, обеспечивающих работу с неравенствами. Прежде всего это функция SemialgebraicCompo-nents [ineqs, vars], которая определят комплект решений неравенств ineqs по переменной vars.

Приведенные ниже примеры иллюстрируют работу данной функции: <<Algebra`Algebraiclnequalities` SemialgebraicComponents[{х (х^2 - 1) (х^3 - 2) > 1}, х] {-3, 3} SemialgebraicComponents[{х + у ^ 2 1}, {х, у}] SanialgebraicCarpanents[(x+у 2 1}, {х, у}] SemialgebraicComponents[{х ^ 2 + у ^ 2 0}, {х, у}] {{-3/16,-3/16},{3/16,3/16}} SemialgebraicComponents[{x ^ 2 + y ^ 2/4 + z ^ 2/9 > 1, х ^ 2 + (у - 1) ^ 2 + (2- 2) ^ 2 < 0}, {х, у, z}] {} Для решения неравенства служит функция InequalitySolve [expr, var], которая решает неравенство ехрг относительно переменной var. Следующие примеры иллюстрируют применение данной функции: <<Algebra` InequalitySolve` InequalitySolve [х (х^2- 5) (х^2- 6) > 0, х] -sqrt(6) 7sqrt(6) InequalitySolve[x^2/Abs[х- 2] >= 0 && 1/х < х + 1, х] -1/2(1-sqrt(5) 2

Функции для представления комплексных данных Relm Подпакет 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; RealValued[f, g] {f, g) Im[l/(l- I f[x] g[x])] f [x] g[x]/(1+ f[x]2g[x]2 ) Im[Sin[a]] Cos[Re[a]] Sinh[Tm[a]]

Операции в конечных полях FiniteFields Поле является алгебраическим понятием, которое может быть определено как множество, имеющее не менее двух элементов, над которыми заданы две бинарные ассоциативные и коммутативные операции сложения и умножения. Кроме того, для существования поля нужны два особых элемента нуль 0, задающий правило сложения а + 0 = а, и единица 1 для задания правила умножения а*1 = 1. Определено также понятие противоположного элемента -а, такого что а + (-а) = 0, и обратного элемента а-- 1, такого что a- 1 а = 1. Поле характеризуется размером р и целым положительным целым d, называемым степенью расширения.

Пакет задает набор функций GF[p] [{k}], GF[p,l] [{k}], GF[p, {0,1}] [{k}], GF[p,d] HGF[p,ilist] [elist], действие которых иллюстрируют следующие примеры: <<Algebra` FiniteFields` GF[7][4] + GF[7][6] {3}7 GF[3,4][1,2,1] GF[3,4][2,2,2,0] {1, 1, 2, 0}3 GF[5,1][1] + GF[3,4][1,1,1] {1, 1, 1, 0}3+ (1)5 Вряд ли подробное их описание заинтересует большинство читателей. Специалистов по полям не затруднит более детальное знакомство с этими функциями в разделе Add-ons справочной базы данных. Там же можно найти описание ряда других функций, относящихся к теории конечных полей.

Оценка интервалов изоляции корней полиномов Rootlsolation Следующие функции под пакета Rootlsotation позволяют оценивать интервалы изоляции для действительных и комплексных корней полиномов: CountRoots [poly, {x,ml,m2} ] возвращает число корней полинома poly от переменной х в комплексном интервале {ml, m2 }; RealRootsIntervals [poly] возвращает разделенный интервал изоляции для вещественных корней полинома poly; RealRootsIntervals [polyl,poly2,...] возвращает разделенные интервалы изоляции для вещественных корней нескольких полиномов; ComplexRootsIntervals [poly] возвращает разделенный интервал изоляции для комплексных корней полинома; ComplexlRootsIntervals [polyl, poly2,...] возвращает разделенные интервалы изоляции для комплексных корней нескольких полиномов; Contractlnterval [a,n] возвращает интервал изоляции для числа а с точностью, задаваемой числом знаков результата п.

Операции с полиномами Если конечные поля понятие достаточно экзотическое, то полиномы встречаются сплошь и рядом во многих математических и научно- технических расчетах. В пакете расширения Algebra определен ряд новых операций над полиномами. Начнем их рассмотрение с функции PolynomialExtendedGCD: PolynomialExtendedGCD [polyl, poly2 ] возвращает наибольший общий делитель двух полиномов; PolynomialExtendedGCD[polyl,poly2,Modulus->p] возвращает наи- больший общий делитель двух полиномов по модулю р.

Далее следует функция PolynomialPowerMod [polyl, n, (poly2, р} ], которая является существенно ускоренной версией функции PolynomialMod. степени ускорения свидетельствует следующий пример: <<Algebra`PolynomialPowerMod` Timing[PolynomialPowerMod[1 + х, 200, х^З + x^2 + 1, Prime[4750]]][[1]], Timing [ PolynomialMod [ (1 + x)^200, x^ + х^2 + 1, Prime [4750] ]][[1]] {0. Second, 2.37 Second) В данном случае вычисления по функции PolynomialPowerMod оказались вы- полненными менее чем за 0.01 с, что дает нулевой результат. Еще одна функция в трех ее модификациях работает с симметричными полиномами: SymmetricReduction [ {xl,...,xn}, k] возвращает симметричный полином степени k по переменным {х 1,..., хn); SymmetricReduction [f, {xl,...,xn}] возвращает часть полинома {p,q} по переменным {х 1,...,хп}, где f=p+q, причем р есть симметричная часть, q остаток; SymmetricReduction [f, {xl,...,xn}, {s1,..., sn} ] возвращает часть полинома (p,q) попеременным {xl,...,xn}, где элементарный симметричный полином представляет список {s1,..., sn}.

Преобразование полиномов в схему Горнера Horner Подпакет Horner в системе Mathematica 4 реализует хорошо известную схему вычисления полиномов схему Горнера. При ней операции возведения в степень заменяются операциями умножения. Для этого служит функция Horner: Horner [poly] устанавливает полином poly в форму Горнера; Horner [poly, vars] устанавливает полином ряда переменных vars в форму Горнера. Схема Горнера может использоваться и для отношения полиномов: Horner [polyl/poly2] и Horner [polyl/poly2, varsl,vars2]. Эти функции можно использовать для улучшенного представления аппроксимации Паде, что демонстрирует следующий пример: <<Calculus ` Fade` approx = Padef Exp[Log[x] -х], {х, 0, 3, 2}]] Horner[ approx ] Переход к схеме Горнера дает ряд преимуществ перед обычным вычислением полиномов: уменьшается время вычислений, повышается их точность, уменьшается вероятность расхождения численных методов, в которых используются полиномы. В системе Mathematica 3 под пакет Corner находился в пакете расширения NumberMath, что было не вполне логично.

Пакет вычислительных функций Calculus Пакет расширения Calculus содержит представительный набор функций для решения дифференциальных уравнений, задания функций единичного скачка и импульса, выполнения операций с векторами, преобразований Фурье и Лапласа, выполнения спектрального анализа и синтеза, расширенного вычисления пределов и проведения аппроксимаций аналитических функций. Для открытия пакета используется команда Calculus` Решение дифференциальных уравнений DSolvelntegrals Многие нелинейные дифференциальные уравнения не имеют общего решения. В под-пакете DSolvelntegrals определены функции, позволяющие найти решения в форме полного интеграла: Completelntegral [eqn, u [х, у,...], {х, у...} ] создает полный интеграл для дифференциального уравнения, касательного к и [х, у,...]; Differential Invariants [ {eqnsl, eqns2,...}, {u [х], v [х],...}, х} возвращает список дифференциальных инвариантов для простых переменных {u[x],v[x],...} и х; Differential Invariants [ {eqnsl, eqns2,...}, {u, v,...}, х} возвращает список дифференциальных инвариантов для простых переменных {u, v,...} и х;

Дельта-функция Дирака DiracDelta В под пакете DiracDelta системы Mathematica 3 задано определение двух полезных функций Дирака: UnitStep [х] возвращает функцию с единичным скачком при х = 0 (дает значение 0 при х 1); DiracDelta [x] возвращает дельта-функцию Дирака, которая является импульсом с единичной площадью, бесконечно малой шириной в точке х = 0 и бесконечно большой амплитудой. Рисунок 11.1 поясняет применение этих функций. Функция UnitStep имеет простую графическую иллюстрацию, тогда как построение графика функции DiracDelta в принципе невозможно эта функция представляет собой линию бесконечно большой высоты в точке х - 0. Обратите внимание на то, что интеграл от функции Дирака при интегрировании от -°° до +°° равен 1.

Рис Робота с функцией единичного скачка и дельта-функцией Дирака Обе описанные функции широко применяются при решении задач автоматического регулирования и при математическом моделировании систем и устройств. Поэтому в системе Mathematica 4 они перешли в разряд встроенных функций.

Рациональная аппроксимация аналитических функций Fade Полиномиальная аппроксимация и обычное разложение функций в ряд Тейлора нередко дают слишком большую погрешность. Уменьшение ее возможно при представлении аппроксимирующей функции в виде отношения двух полиномов разной степени. В под пакете Fade определены две функции для рациональной аппроксимации Паде: Pade[f, {x,x0,m,k}] возвращает выражение для аппроксимации Паде функции f(x) в окрестностях точки х 0 в виде отношения двух полиномов степеней m и k; EconomizedRationalApproximation [f, {х, {xmin, xmax}, m, k} ] возвращает выражение для осуществления экономичной рациональной аппроксимации функции f(x) в интервале {xmin, xmax} в виде отношения двух полиномов степеней m и k. Аппроксимация Паде является расширением полиномиальной аппроксимации, обеспечивающим повышенную точность представления функции. На рис представлен пример выполнения аппроксимации Паде с построением графика исходной функции (темная линия) и аппроксимирующей функции (более светлая линия).

Векторный анализ VectorAnalysis Системы координат и их преобразования Подпакет VectorAnalysis содержит множество функций, используемых при выполнении векторного анализа. Здесь надо иметь в виду, что речь идет не о векторах как представителях одномерных массивов, которые рассматривались ранее. В данном случае вектор это направленный отрезок прямой в пространстве, заданном той или иной системой координат Заметная часть функций под пакета VectorAnalysis относится к заданию и преобразованию координат: Coordinates [ ] возвращает имена переменных текущей системы координат; Coordinates [coordsys] возвращает имена переменных системы координат coordsys; SetCoordinates [coordsys] устанавливает систему координат coordsys с текущими переменными; Coordinates [coordsys, {vars}] устанавливает систему координат coordsys с переменными, заданными списком {vars }.

Наименование Представление ПрямоугольныеCartesian [х, у, z] ЦилиндрическиеCylindrical [r, theta, z] СферическиеSpherical [r, theta, phi] Параболические цилиндрическиеParabolicCylindrical [u, v, z] ПараболическиеParaboloidal [u, v, phi] Эллиптические цилиндрическиеEllipticCylindrical [u, v, z, a] Вытянутые сфероидальныеProlateSpheroidal [xi, eta, phi, a] Сплющенные сфероидальныеOblateSpheroidal [xi, eta, phi, a] БиполярныеBipolar[u, v, z, a] БисферическиеBispherical [u, v, phi, a] ТороидальныеToroidal [u, v, phi, a] КоническиеConical [lambda, mu, nu, a, b] Конфокальные эллипсоидальныеConfocalEllipsoidal [lambda, rnu, nu, a, b, c] Конфокальные параболическиеConfocalParaboloidal [lambda, mu, nu, a, bj Ниже даны названия систем координат и соответствующие им представления.

Ряд функций служит для контроля и установки параметров систем координат: CoordinateRanges [ ] возвращает пределы изменения переменных текущей координатной системы; Parameters [ ] возвращает параметры текущей координатной системы; ParametersRanges [ ] возвращает пределы изменения параметров текущей координатной системы; CoordinateRanges [coordsys] возвращает пределы изменения переменных координатной системы coordsys; Parameters [coordsys] возвращает параметры координатной системы coordsys; ParametersRanges [coordsys] возвращает пределы изменения параметров координатной системы coordsys; SetCoordinates [coordsys, {vars,param} ] устанавливает параметры текущей координатной системы как параметры coordsys с переменными vars и параметрами param.

Для преобразования координат служат следующие функции: CoordinatesToCartesian [pt] преобразование текущих координат в декартовы; CoordinatesToCartesian [pt, coordsys] преобразование координат coordsys в декартовы; CoordinatesFromCartesian [pt] преобразование из декартовых координат в текущие; CoordinatesFromCartesian [pt, coordsys] преобразование из декартовых координат в координаты coordsys.

Геометрические расчеты пакет Geometry Характеристики регулярных полигонов и полиэдров Polytopes Подпакет Polytopes содержит ряд функций для регулярных полигонов (многоугольников): NumberOfVertices [р] число вершин углов полигона; NumberOfEdges [p] число сторон полигона; NumberOf Faces [p] число граней полигона; Vertices [р] список координат вершин углов полигона; Area [р] площадь полигона при длине каждой стороны, равной 1; InscribeciRadius [р] радиус вписанной в полигон окружности; CircumscribedRadius [р] радиус описывающей полигон окружности.

В этих функциях наименование полигона р может быть следующим (в скобках дано число сторон): Digon (2) Triangle (3) Square (4) Pentagon (5) Hexagon (6) Heptagon (7) Octagon (8) Nonagon (9) Decagon (10,) Undecagon (11) Dodecagon (12) На рис показаны примеры применения некоторых из этих функций и построение крупными точками вершин полигона Пентагона (пятиугольника).

Для объемных фигур полиэдров имеются следующие функции: NumberOfVertices [р] число вершин углов полиэдра; NumberOfEdges [р] число сторон полиэдра; NumberOf Faces [р] число граней полиэдра; Vertices [p] список координат вершин углов полиэдра; Area [p] площадь полиэдра при длине каждой стороны, равной 1; InscribedRadius [р] радиус вписанной в полиэдр окружности; CircumscribedRadius [р] радиус окружности, описывающей полиэдр; Volume [p] объем полиэдра; Dual[p] дуальный полиэдр; Schlafli[p] символ полиэдра. Здесь наименование полиэдра может быть следующим: Tetrahedron (4) Cube (6) Octahedron (8) Didecahedron (12) Icosahedron (20) рис

Вращение фигур на плоскости и в пространстве Rotations Для задания поворота плоских фигур на заданный угол в под пакете Rotations заданы следующие функции: RotationMatrix2D[theta] дает матрицу для поворота на угол theta в двух измерениях; Rotate2D [vec, theta] поворачивает вектор vec по часовой стрелке на угол theta; Rotate2D[vec,theta,{x,y}] поворачивает вектор vec по часовой стрелке на угол theta относительно точки с координатами {х, у}. Рисунок иллюстрирует работу с этими функциями. Аналогичные функции существуют и для поворота трехмерных фигур: RotationMatrix3D [psi, theta,phi] дает матрицу поворота на заданные углы в трехмерном пространстве; Rotate3D [vec, psi, theta, phi] поворачивает вектор vec на заданные углы в трехмерном пространстве; Rotate3D [vec, psi, theta, phi,{x,y,z}] поворачивает вектор vec на заданные углы в трехмерном пространстве относительно точки с координатами {х,у, z}.

Линейная алгебра пакет LinearAlgebra Декомпозиция Холесского Cholesky Подпакет Cholesky содержит единственную функцию HoleskyDecomposition [m], которая вычисляет декомпозицию (факторизацию, разложение) Холесского для симметричной положительно определенной матрицы т. Примеры выполнения декомпозиции Холесского даны ниже: <<LinearAlgebra`Cholesky` hil = Tablet l/(i + j - 1), {i, 1, 4}, {j, 1, 4}] Eigenvalues[ N[hil] ] { , , , } u = CholeskyDecomposition[hil] MatrixForm[Transpose[u]. u]

Метод исключения Гаусса GaussianElimination Следующие функции обеспечивают реализацию метода исключения Гаусса при решении линейного уравнения вида А-x =b: LUFactor [m] возвращает LU-декомпозицию матрицы m; LUSolve [lu, b] решает систему линейных уравнений с матрицей коэффициентов lu и вектором свободных членов b методом исключения переменных Гаусса; LU [a, pivots] создает объект, используемый в LUSolve. Применение этих функций поясняют примеры, показанные ниже: <<LinearAlgebra`GaussianElimination` MatrixForm[a = {{1, 2, 3}, {4, 5, 6}, {-1, 5, -5}}] lu = LUFactor[a] b = {10, -3, 12} {10, -3, 12} LUSolve[lu, b] Метод исключения Гаусса является хорошо апробированным методом решения систем линейных уравнений, что делает реализацию описанных функций полезным дополнением к встроенным функциям линейной алгебры.

Ортогонализация и нормализация Ortogonalization В под пакете ортогонализации Ortogonalization имеются следующие функции: GramSchmidt [ {vl, v2,...} ] создает ортогональное множество на основе списка векторов v1, v2,...; Normalize [vect] возвращает нормированный вектор vect; Projection [vectl, vect2] дает ортогональную проекцию вектора vl на вектор v2. В этих функциях после аргументов допустимы опции InnerProduct->exprn Normalized- >False (отказ от нормировки). Примеры работы с функциями ортогонализации представлены ниже: <<LinearAlgebra`Orthogonalization` {wl, w2, w3} = GramSchmidt[ {{1,3,2}, {2,4,3}, {2,4,6}}] { wl. w2, w2. w3, wl. w3, wl. wl, w2. w2, w3. w3} {0, 0, 0, 1, 1, 1} GramSchmidt[{1, x, x^2, x^3, x^4}, InnerProduct -> (Integrate[#l #2,{x,-l,l}]&)] //Simplify Normalize[LegendreP[2,x], InnerProduct ->(Integrate[#l #2,{x,-l,l}]&)] {wl, w2} = GramSchmidt[{{3,4,3}, {2,3,6}}, Normalized -> False] {wl. wl, wl. w2} {34, 0}

Решение линейных уравнений с трехдиагональной матрицей Tridiagonal При решении линейных уравнений часто встречаются матрицы особой формы трехдиагональные. Подпакет Tridiagonal имеет функцию для решения линейных уравнений с такой матрицей: TridiagonalSolve [a,b, с, г] решение системы линейных уравнений с трехдиагональной матрицей m. х==г (диагонали представлены векторами а, b и с, вектор свободных членов г). Пример применения даннойфункции: <<LinearAlgebra` Tridiagonal` {а, b, с} = {{1, 2, 3}, {4, 5, б, 7}, {10, 9, 8}} {{1, 2, 3}, {4, 5, 6, 7}, {10, 9, 8}} m = Table[Switch[ j-i, -1, a[[j]], 0, b[[jj], 1, c[[j-l]], _, 0], {i, 4}, {j, 4}]//MatrixForm TridiagonalSolve[a, b, c, {8, 3, 4, 5}

Расширение в теории чисел Цепные дроби ContinuedFractions Следующие функции подпакста ContinuedFractions служат для представления чисел в виде цепных дробей или для формирования цепной дроби из списков: ContinuedFraction [х] возвращает цепную дробь для рационального числа х; ContinuedFraction [х, n] возвращает цепную дробь для числа х с числом членов п; ContinuedFractionForm [{а 0, al,...}] создает цепную дробь из списка {a0,al,...}; Normal [ContinuedFractionForm[ {а 0, al,...}]] представление в нормальной форме. Примеры разложения чисел на цепные дроби: <<NumberTheory` ContinuedFractionss ContinuedFraction[123/1234]//ContinuedFractionForm ContinuedFraction[Sqrt[5], 10]//ContinuedFractionForm 2, ContinuedFraction[GoldenRatio, 6 ] //ContinuedFractionForm Table[ Normal[ContinuedFractionForm[Table[1, {n}]]], {n, 9}] %- N[GoldenRatio] { , , , , , , , , }

В под пакете имеются также следующие функции: ToPeriodicForm[x] дает десятичное представление для рациональн Ъго числа 0 < х < 1; ToPeriodicForm [х, b] дает представление рационального числа х числом с основанием b; PeriodicForm[ {а 0,...}, {am,...}] дает периодическую форму представления списков; PeriodicForm[ {а 0,...}, {am,...},b] дает периодическую форму представления списков с основанием b; Normal [ PeriodicForm [{а 0,...}, {am,...}]] преобразование в нормальную форму; Normal [PeriodicForm[ {а 0,...}, {am,...},b] ] преобразование в нормальную форму с основанием b.

Функции теории чисел NumberTheory Functions В под пакете NumberTheoryFunctions имеется ряд функций, относящихся к теории чисел: SquareFreeQ[n] дает True, если п не имеет квадратичного фактора, и False в ином случае; NextPrime [n] дает наименьшее простое число, превосходящее п; ChineseRemainderTheorem[listl, Iist2.] дает наименьшее неотрицательное целое г, такое что Mod [r, Iist2] ==list1; SqrtMod [d, n] дает квадратный корень из (d mod п) для нечетного n; PrimitiveRoot [n] дает примитивный корень п; QuadraticRepresentation [d, n] дает решение {х,у} для уравнения х 2 + (d у) 2 ==п для нечетного п и положительного d; ClassList[d] дает список неэквивалентных квадратичных форм дискриминанта d для отрицательного и свободного от квадратов целого d вида 4n+1; ClassNumber [d] дает список неэквивалентных квадратичных форм дискриминанта d; SumOf Squares [d, n] дает число представлений целого числа п в виде суммы d квадратов; SumOf SquaresRepresentations [d, n] дает список представлений целого числа п в виде суммы d квадратов, игнорируя порядок и знаки.

Работа с простыми числами-PrimeQ В под пакете PrimeQ в дополнение к функции ядра PrimeQ [n] имеется ряд функций для работы с простыми числами: ProvablePrimeQ [n] возвращает True, если п проверено на простоту, и False в ином случае; PrimeQCertif icate [n] возвращает сертификат о том, что n простое или композитное число; ProvablePrimeQ [n, Certif icate->True] возвращает сертификат, который может использоваться для проверки чисел на простоту; PrimeQCertif icateCheck [check, n] проверяет, удостоверяет ли сертификат check простоту или композитность п. Вычисление примитивных элементов Primitive Element Подпакет PrimitiveElement содержит всего одну функцию для вычисления примитивных элементов множественного алгебраического выражения: PrimitiveElement [z, {а 1 а 2,...} ] возвращает список {b, { f1, f2,...}}, где b примитивный элемент расширения рациональных алгебраических чисел al, а 2,... и f1, f 2,... полином переменной z, представляющей al, a2,... как термы примитивного элемента. Создание рядов Рамануджанат-Дирихле Ramanujan В под пакете Ramanujan определены следующие функции: RamanujanTau [n] n-й коэффициент ряда Рамануджана т-Дирйхле (т n ); RamanujanTauGeneratingFunction [z] производящая функция ряда Рамануджана т-Дирихле; RamanujanTauDirichletSeries [s] ряд Рамануджана т-Дирихле f(s); RamanujanTauTheta [t] функция Рамануджана т-Дирихле o(t) RamanujanTauZ [t] функция Рамануджана т-Дирихле z(t).

Это довольно редкие функции, представляющие интерес для специалистов в теории чисел. Достаточно подробные их определения даны в справочной базе данных. Ограничимся приведением примеров их использования: <<NumberTheory`Ramanujan` RamanujanTau[5] 4830 Sum[RamanujanTau[n] z^n, {n, 5}] z - 24 z z z z5 RamanujanTauGeneratingFunction[. 1] RamanuJanTauGeneratingFunction[.99] x RamanujanTauDirichletSeries[ ] z = RamanujanTauZ[9.22] theta = RamanujanTauTheta[9.22] z Exp[-I theta] I

Рационализация чисел Rationalize Подпакет Rationalize расширяет возможности представления чисел в рациональном виде. Он содержит определения следующих функций: ProjectiveRationalize [ {х 0, xl,..., хn} ] возвращает список целых чисел, дающих рациональные представления для чисел заданного списка; ProjectiveRationalize [ {х 0, xl,..., хn},ргес] возвращает список целых чисел, дающих рациональные представления с погрешностью не более 10- рreк Af f ineRationalize [ {х 0, xl,..., хn} ] возвращает список рациональных приближений для чисел заданного списка; Aff ineRationalize [ {х 0, xl,..., xn},prec] возвращает список рациональных приближений для чисел заданного списка, вычисленных с погрешностью не более 10- ргес. Встроенная в ядро функция Rationalize дает рациональное представление для одиночных вещественных чисел. Приведенные функции выполняют рационализацию для списков чисел. Примеры их применения представлены ниже: <<NumberTheory` Rationalize` Rationalize[N[3 Pi], 6]/ Rationalize[N[11 Pi], 6] 9/35 ProjectiveRationalize[{N[3 Pi], N[11 Pi]}] {3, 11} AffineRationalize[{N[3 Pi], N[11 Pi]}, 6] {1065/113, 3905/113 }

Нахождение полинома, дающего заданный корень Recognize Подпакет Recognize содержит определение одноименной с ним функции в двух формах: Recognize [x,n,t] находит полином переменной t степени, большей п, такой, что х является его корнем; Recognize [х, n, t, k] находит полином переменной t степени, большей п, такой, что х является его корнем, и со штрафным весовым коэффициентом k, предназначенным для подавления генерации полиномов высших степеней. Тета-функция Зигеля Подпакет SiegelTheta содержит еще одну редкую функцию: SiegelTheta [z, s] возвращает значение тета-функции Зигеля Q(Z, s). Примеры вычисления этой функции даны ниже: << NumberTheory` SiegelTheta` SiegelTheta[{1+1,2+1}, {2+1,-1+41}, {1.2, I}] Sum[E^(Pi I {tl,t2}.{ {1+1,2+1}, {2+1, -1+41} }.{tl,,t2} + 2 Pi I {tl,t2}.{l.2, }), {tl,-10,10>, {t2,-10,10}] I В заключительной части этого примера дано вычисление тета-функции Зигеля по ее исходному определению.

Численные расчеты пакет NumericalMath Нули функций Бесселя BesselZeros В под пакете BesselZeros определены функции, дающие список аргументов функций Бесселя в их первых п нулевых точках: BesselJZeros [mu, n], Bessel- YZeros[mu,n], BesselJPrimeZeros[mu,n], BesselYPrimeZeros[mu,n] и др. Ввиду редкого использования функций этого класса ограничимся парой примеров их применения: <<NumericalMath`BesselZeros` BesselJZeros[0, 5] { , , , , } BesselJYJYZeros[2, 6/5, 3, WorkingPrecision -> 20] { , , } Поиск корней уравнений с интерполяцией InterpolateRoot Подпакет InterpolateRoot дает средства для ускоренного и более точного поиска корней уравнений по сравнению с соответствующими функциями ядра. Достигается это за счет применения интерполяции функции, корни которой ищутся. Под-пакет задает функцию InterpolateRoot [f, {х, a, b} ], которая находит корень функции f в интервале х от а до b. Вместо функции f можно задавать уравнение eqn. Возможны опции AccuracyGoal- >Automatic, Maxlterations->15, WorkingPrecision->$MachinePrecision и ShowProgress->False (указаны принятые по умолчанию значения).

Реализация интервальных методов IntervalRoots Иногда важно не найти приближенное значение корня, а уточнить интервал, в котором он находится. В под пакете IntervalRoots для этого используется ряд известных методов, реализованных следующими функциями: IntervalBisection [f,x, int, eps] находит корень функции f(x) путем уточнения исходного интервала int с заданной погрешностью eps методом половинного деления; IntervalSecant [f,x, int, eps] находит корень функции f(x) путем уточнения исходного интервала int с заданной погрешностью eps методом секущей; IntervalNewton [ f, x, int, eps ] находит корень функции/(x) путем уточнения исходного интервала int с заданной погрешностью eps методом Ньютона (касательной). Во всех функциях можно опциями задать максимальное число рекурсий (Max-Recursion) и погрешность (WorkingPrecision).

Табличное численное интегрирование Listlntegrate Встроенная в ядро функция NIntegrate вычисляет определенные интегралы при известной подынтегральной функции. Однако нередко, например при экспериментах, такая функция задается таблицей или списком значений. В под пакете List-Integrate имеются функции для решения этой задачи табличного интегрирования: Listlntegrate [ {yl, y2,..., yn},h] возвращает численное значение интеграла для функции, заданной списком ординат yi при заданном шаге h по х; Listlntegrate [ {yl, y2,..., yn}, h, k] возвращает численное значение интеграла для функции, заданной списком ординат yi при заданном шаге h по х, используя k точек каждого подинтервала; Listlntegrate [ {{xl, yl}, {х 2, у 2 },..., {хп, уп}}, k] возвращает численное значение интеграла для функции, заданной списком координат {х.., у.}. используя k точек для каждого подынтервала.

Численное вычисление пределов NLimit В под пакете N limit определена функция Nlimit[expr,х->х 0] для численного вычисления пределов выражений ехрг: <<NumericalMath` NLimit` NLimit[Zeta[s] - l/(s-l), s->l] N[EulerGamma] С помощью команды Options [NLimit] можно просмотреть опции, которые используются функцией NLimit по умолчанию. В этом под пакете задано также вычисление бесконечных сумм Эйлера EulerSum[f, { i, imin, Infinity} ].

Имеется также функция вычисления производной в численном виде: ND [ f, х, хО] вычисляет первую производную f(x) в точке х 0; ND[f, {x,n},х 0] вычисляет п-ю производную f(X) в точке х 0. Пример вычисления производной: ND[Exp[Sin[x]], х, 2] Options[ND] {WorkingPrecision-> 16, Scale-> 1, Terms-> 7, Method-> EulerSum] В некоторых случаях вычисления могут быть ошибочными. Тогда следует использовать опции особенно опцию выбора метода Method. Помимо метода по умолчанию (EulerSum) можно использовать NIntegrate (метод интегрирования по формуле Коши).

Численное вычисление остатка N Residue В под пакете NResidue имеется функция вычисления остатка NResidue [expr, {x, x0} ] в точке х=х 0: <<NumericalMath` NResidue` NResidue[1/z, {z, 0}] x I Residue[f, {z, 1.7}] 0 NResidue[f, {z, 1.7}] xl0-17I l/((z I)(z I)) /. z -> I Options[NResidue] Численное разложение в ряд NSeries Подпакет NSeries вводит функцию NSeries [f, {x,xO,n}], которая дает численный ряд, аппроксимирующий функцию f(x) в окрестности точки х = х 0, включая термы от (х -х 0 ) -n до (х - х 0 ) п.

Вычисление коэффициентов формулы интегрирования Ньютона Котесса NewtonCotes Функция NIntegrate, имеющаяся в ядре системы Mathematica, реализует метод интегрирования Гаусса Кронрода. Еще одним известным методом интегрирования является метод Ньютона Котесса, сводящий интегрирование к вычислению взвешенных ординат функции в равномерно расположенных точках оси абсцисс. Для реализации метода используются следующие функции: NewtonCotesWeights [n, a, b] возвращает список весовых коэффициентов и абсцисс узловых точек {wi, xi} для квадратуры Ньютона Котесса на интервале от а до b; NewtonCotesError [n, f, a, b] возвращает погрешность формулы Ньютона Котесса для заданной функции f. <<NumericalMath` NewtonCotes` NewtonCotesWeights[5, 0, 10] NewtonCotesError[5, f, 0, 10] NewtonCotesError[5, f, a, a+h] NewtonCotesWeights[5, -0, 10, QuadratureType -> Open] NewtonCotesError[5, f, 0, 10, QuadratureType -> Open] Обратите внимание на то, что приведенные формулы готовят данные для численного интегрирования методом Ньютона Котесса, но не выполняют самого интегрирования.

Статистические расчеты Статистические расчеты пакет Statistics Построение гистограмм Статистика распределен и и Статистическая обработка данных Сглаживание данных Регрессия различного вида В ядре системы Mathematica практически нет статистических функций. Зато пакет расширения Statistics дает сотни функций, охватывающих практически все разделы теоретической и прикладной статистики. Тем не менее, вопрос о привлечении универсальных математических систем к выполнению серьезных математических расчетов является спорным из-за существования множества специальных статистических компьютерных систем, таких как Statistica, StatGraphics и т. д. Большинство специализированных статистических программ предлагают специальный интерфейс, базирующийся на обработке табличных данных большого объема, реализуют многовариантный расчет необходимых статистических параметров (например, регрессию сразу по десяткам формул) и отсев заведомо ошибочных данных. Поэтому при статистических расчетах применение подобных программ предпочтительно.

Состав пакета Statistics Пакет расширения Statistics содержит следующие под пакеты: Confidencelntervals функции доверительных интервалов; ContinuousDistributions функции непрерывных распределений; DataManipulation манипуляции с данными; DataSmoothing сглаживание данных; DescriptiveStatistics статистика распределений; DiscreteDistributions функции дискретных распределений; HypothesisTests проверка статистических гипотез; LinearRegression линейная регрессия; MultiDescriptiveStatistics статистика многомерных распределений; MultinormalDistribution функции многомерных нормальных распределений; NonlinearFit нелинейная регрессия; NormalDistribution функции нормального распределения; Common данные общего характера. Как и ранее, для работы каждого из под пакетов требуется его загрузка в память компьютера с помощью команды <<Statistics`Имя_под пакета` Имена под пакетов расширения статистики приведены выше.

Манипуляции с данными DataManipulation Статистические данные обычно бывают представлены в виде списков как одномерных, так и двумерных (таблиц и матриц) и даже многомерных. Большая часть функций, обеспечивающих манипуляции с данными, сосредоточена в под пакете DataManipulation. Данные могут вводиться в строках ввода или считываться из файлов с помощью функции ReadList. Для манипуляций с данными могут использоваться многие функции ядра системы, описанные ранее, в частности, все функции обработки списков. Подпакет DataManipulation дает ряд удобных функций. Ниже представлена первая группа таких функций: Column [data, n] возвращает n-й столбец списка data; Column [data, {nl, n2,...}] возвращает список из столбцов ni списка данных; ColumnTake [data, spec] возвращает столбцы списка data с данной спецификацией spec; ColumnDrop [data, spec] удаляет столбцы списка data с данной спецификацией spec; Column Jo in [datal, data2,...] объединяет столбцы списков datai; RowJoin [datal, data2,...] объединяет строки списков datai; DropNonNumeric [data] удаляет из списка data нечисловые элементы; DropNonNumericColumnfdata] удаляет из списка data столбцы с нечисловыми элементами Полезны также следующие функции под пакета: BooleanSelect [list, sel] удаляет из list элементы, которые дают True при тестировании выражения sel; TakeWhile [list,pred] удаляет из list все элементы, начиная с того, для которого pred дает True; LengthWhile [list,pred] возвращает число элементов, которые были удалены после того, как pred дало значение True (отсчет с начала списка).

Построение гистограмм Ряд функций служит для подготовки данных с целью построения гистограмм: Frequencies [list] готовит данные для представления частотной гистограммы; QuantileForm[list] дает отсортированные данные для представления квантилей; CumulativeSums [list] дает кумулятивное суммирование данных списка. Пример построения гистограммы по данным списка из двойных элементов с помощью функции Frequencies дан на рис Для построения графика при этом использована функция BarChart из пакета расширения Graphics. Для подготовки гистограмм могут использоваться и следующие функции: BinCounts[data,{min,max,dx}] RangeCounts [data, {cl, c2,...} ] CategoryCounts [data, {el, e2,...} ] BinLists[data,{min,max,dx}] RangeLists [data, {cl,c2,...} ] CategoryLists [data, {el, e2,...} ] С примерами их работы можно ознакомиться по справочной системе Mathenatica, содержащей полное описание данного под пакета.

Статистика распределений DescriptiveStatistics В под пакете DescriptiveStatistics сосредоточены наиболее важные функции по статистике распределений: CentralMoment (data, r) возвращает центральный момент данных data порядка r; Mean [data] возвращает среднее значение данных data; MeanDeviation [data] возвращает среднее отклонение данных; Median [data] возвращает центральное значение (медиану) данных; MedianDeviation [data] возвращает абсолютное отклонение (от медианы) данных; Skewness [data] возвращает коэффициент асимметрии данных; StandardDeviation [data] возвращает стандартное отклонение данных; GeometricMean [data] возвращает геометрическое среднее данных; HarmonicMean [data] возвращает гармоническое среднее данных; RootMeanSquare [data] возвращает среднеквадратичное значение данных; Quantile [data, q] возвращает q-й квантиль; InterpolatingQuantile [data, q] возвращает q-й квантиль, используя при вычислениях интерполяцию данных; VarianceData [data] возвращает среднеквадратичное отклонение данных.

Мы не приводим определений этих функций, поскольку при символьных данных data их легко получить именно в том виде, который реализован в системе Mathematica: ds={xl,x2,x3} {xl, x2, хЗ} Mean[ds] 1/3 *(xl + x2 + x3) MeanDeviation[ds] 1/3 (Abs[xl + (-xl-x2-x3)] + Abs[x2+ 1/3 (-xl-x2-x3) + Abs 1/3[-xl-x2-x3) +хЗ]) Median[ds] x2 Variancefds] 1/2((x1+1/3(-xl + x2 - x3))2 + (x2 + 1/3 (-xl-x2-x3))2 + ( (-xl-x2-x3) + x3)2) Skewness[ds] (SQRT(3) ( (xl (-xl - x2 - x3))3 + (x2+1/3 (-xl-x2-x3))3 + (1/3 (-xl -x2- x3) + x3))2 / (x2+ 1/3 (-xl-x2-x3))2 +(1/3 (-xl-x2-x3) +х 3)2 )^(3/2)

Следующие примеры поясняют действие этих функций при обработке численных данных: <<Statistics'DescriptiveStatis tics' data:={10.1,9.6,11,8.2,7.5,12,8.6,9} CentralMoment[data,2] Mean[data] 9.5 MeanDeviation[data] Median[data] 9.3 MedianDeviation[data] 0.95 Skewness[data] StandardDeviation[data] GeometricMean[data] HarmonicMean[data] RootMeanSquare[data] Quantile[data,1] 12 InterpolatingQuantile[data,1] InterpolatingQuantile[ {10.1, 9.6, 11, 8.2, 7.5, 12, 8.6, 9), 1] Variance[data] С рядом других, менее распространенных функций этого под пакета можно ознакомиться с помощью справочной системы. Там же даны примеры их применения.

Сглаживание данных DataSmoothing В под пакете DataSmoothing определены функции для сглаживания данных, имеющих большой случайный разброс. К таким данным обычно относятся результаты ряда физических экспериментов, например по энергии элементарных частиц, или сигналы, поступающие из космоса. Для того чтобы отсеять информацию из таких данных с большим уровнем шумов и применяется процедура сглаживания. Она может быть линейной (например, усреднение по ряду точек) или нелинейной. Определены следующие функции сглаживания: MovingAverage [data, r] сглаживание данных data методом усреднения для г точек; MovingMedian [data, r] сглаживание данных data по медиане для г точек (опция RepeatedSmoothing->True используется для повторного сглаживания); LinearFilter [data, {c0, cl,..., сr-1} ] линейная фильтрация (сj весовые множители); ExponentialSmoothing [data, a] экспоненциальное (нелинейное) сглаживание, параметр а задает степень сглаживания. Ниже представлены результаты сглаживания символьных данных, выявляющие соотношения, используемые при сглаживании: ds : = {xl, х 2, хЗ, х 4, х 5} MovingAverage[ds,3] {1/3* (xl + x2 + x3), (х 2 + хЗ + х 4), (хЗ + х 4 + х 5)} MovingMedian[ds,3] {х 2, хЗ, х 4} ExponentialSmoothing[ds, 0.2] {xl, xl (-xl + x2), xl+0.2 (-xl + x2) +0.2 (-xl-0.2 (-xl + x2) + x3), xl+0.2(-xl+x2)+0.2 (-xl-0.2 (-xl + x2) +x3) (-xl-0.2 (-xl+x2) (-xl- 0.2 (-xl + x2) + x3) + x4), xl+0.2(-xl + x2) +0.2(-xl-0.2(-xl + x2) +x3) (-xl- 0.2 (-xl+x2) -0.2(-xl-0.2(-xl + x2) + x3) + x4) (-xl- 0.2 (-xl+x2) (-xl- 0.2 (-xl+x2) + x3) (-xl-0.2 (-xl+x2) -0.2 (-xl-0.2 (-xl + x2) + x3) + x4) + x5)}

Другие под пакеты расширения Statistics Подпакет NormalDistribution содержит хорошо известные функции нормального распределения вероятностей и родственные им функции следующих распределений: NormalDistribution [mu, sigma] нормальное распределение; StudentTDistribution [r] T-распределение Стьюдента; ChiSquareDistribution [r] X 2 -распределение; FRatioDistribution [rl, r2] F-распределение. Для этих и многих других непрерывных распределений заданы также функции плотности распределения, среднего значения, среднеквадратичного отклонения, стандартного отклонения, вычисления коэффициента асимметрии и т. д. Целый ряд таких функций задан и в под пакете ContinuousDistributions для ряда функций непрерывного распределения. Мы не приводим их, поскольку они подобны функциям обработки списков, описанным выше. Рисунок 12.4 иллюстрирует получение выражения для плотности нормального распределения pdf и получение графика плотности этого распределения со смещенной вершиной. Подпакет DiscreteDistributions содержит подобные функции для дискретного распределения вероятностей (Пуассона, биномиального, гипергеометрического и иных распределений). Таким образом, три упомянутых под пакета охватывают практически все имеющие применение законы распределения. Функции для оценки доверительных интервалов сосредоточены в под пакете Confidencelntervals.

В под пакете HypothesisTests сосредоточено сравнительно небольшое число хорошо известных функций для выполнения тестов проверки статистических гипотез. Загрузка пакета и проведение теста на среднее значение показаны ниже: <<Statistics` HypothesisTests` datal = {34, 37, 44, 31, 41, 42, 38, 45, 42, 38}; MeanTest[datal, 34, KnownVariance -> 8] QneSidedPValue -> x У специалистов в области статистики интерес вызовут под пакеты MultiDescriptive-Statistics и MultinormalDistribution с многочисленными функциями многомерных распределений. Они позволяют оценивать статистические характеристики объектов, описываемых функциями нескольких переменных. Рисунок 12.5 поясняет загрузку под пакета MultinormalDistribution, получение выражения для плотности нормального распределения по двум переменным xl и х 2 и получение трехмерного графика для плотности такого распределения.

Регрессия Линейная регрессия общего вида LinearRegression В под пакете LinearRegression имеются расширенные функции для проведения линейной регрессии общего вида в дополнение к включенной в ядро функции Fit. Прежде всего это функция Regress: Regress [data, { I, х, х^2 }, х] осуществляет регрессию данных data, используя квадратичную модель; Regress [data, {I, x1, x2, xlx2 }, {x1, x2 }] осуществляет регрессию, используя в ходе итераций зависимость между переменными x 1 и х 2 ; Regress [data, {f 1, f2,...}, vars] осуществляет регрессию, используя модель линейной регрессии общего вида с уравнением регрессии, представляющим линейную комбинацию функций f i от переменных vars. Данные могут быть представлены списком ординат {у 1,у 2,...} или списком {{xll,xl2,...,yl}, {х 21,х 22,...,у 2},...}.

Нелинейная регрессия NonlinearFit В под пакете NonlinearFit содержатся функции для выполнения нелинейной регрессии общего вида: NonlinearFit[data,model,variables,parameters] выполняет регрессию по заданной модели (формуле) model с переменными variables и параметрами parameters для заданных данных data; NonlinearRegress[data,model,variables,parameters] выполняет регрессию по заданной модели (формуле) model с переменными variables и параметрами parameters для заданных данных data с выдачей списка диагностики. Данные могут быть представлены списком ординат {у 1,у 2,...} или списком {{x11,x12,..., yl}, {х 21, х 22,..., у 2},...}. В ходе регрессии минимизируются заданные параметры, так что заданная модель регрессии приближает данные с минимальной среднеквадратичной погрешностью.

На рис показан пример выполнения логарифмической регрессии. При ней модель представлена выражением a*Log[b*x]. Результатом действия функции NonlinearFit является уравнение регрессии в виде этой модели с найденными значениями параметров а и Ь. Представлена также визуализация регрессии в виде графика функции- модели и исходных точек. Следует отметить, что реализация нелинейной регрессии разными методами может давать заметно различающиеся результаты, так что представленные результаты не являются абсолютно строгими.

Полиномиальная регрессия PolynomialFit К сожалению, средства регрессии в Mathematica разбросаны по разным пакетам. Так, в под пакете PolynomialFit пакета NumericalMath определена функция для полиномиальной регрессии: PolynomialFit [data, n] возвращает полином степени п, обеспечивающий наилучшее среднеквадратичное приближение для данных, представленных параметром data. Если data является списком ординат функции, то абсциссы формируются автоматически с шагом 1. Если data является списком координат {xi,yi}, то полином наилучшим образом приближает зависимости Ниже представлен пример применения функции полиномиальной аппроксимации <<NumericalMath`PolynomialFit` р = PolynomialFit[{l,3.9,4.1,8.9,16,24.5,37,50},3] FittingPolyncmial [ <>, 3] p[5] Expand[p[x]] x x x3

Сплайн-регрессия SplineFit Сплайны представляют собой набор полиномов невысокой степени, последовательно применяемых к наборам точек аппроксимирующей функции. Чаще всего используется кубическая сплайновая аппроксимация, при которой коэффициенты полиномов выбираются из условий равенства в стыкуемых точках не только значений функции, но также первой и второй производных. Это придает графику сплайна вид плавной кривой, точно проходящей через узловые точки и напоминающей изгибы гибкой линейки (spline в переводе гибкая линейка). Подпакет SplineFit пакета NumericalMath содержит функцию для проведения сплайн- регрессии, при которой сплайн-функция проходит максимально близко к аппроксимируемым точкам в смысле наилучшего среднеквадратичного приближения. Для этого используется функция SplineFit [data, type], которая возвращает сплайн функцию для данных data, используя сплайн-аппроксимацию типа type по умолчанию это кубический сплайн Cube (другие типы Bezier и CompositeBezier).

Рисунок 12.9 показывает пример сплайн- регрессии для обычной зависимости у(х), представленной пятью парами точек. На нем построены также графики аппроксимирующей функции и исходных точек.

Тригонометрическая регрессия TrigFit Многие выражения содержат периодические тригонометрические функции, например sin(X) или cos(X). Помимо обычного спектрального представления выражений, под пакет TrigFit пакета NumericalMath имеет функции для тригонометрической регрессии: TrigFit [data, n, x] дает тригонометрическую регрессию для данных data с использованием косинусов и синусов вплоть до cos(n x) и sin(n x) и с периодом 2 л; TrigFit [data, n, {x,L}] дает тригонометрическую регрессию для данных data с использованием косинусов и синусов вплоть до cos(2 лuc/L) и sm(2 лnx/L) и с периодом I; TrigFit [data, n, {x, x0, xl} ] дает тригонометрическую регрессию для данных data с использованием косинусов и синусов вплоть до cos(2 лn(x - х 0 )/ (x-x0)) и sin(2 лn(x-x 0 )/(x 1 -x 0 )) и с периодом (x1-x0).