Во-первых, имеется большое количество встроенных специальных функций, позволяющих рассчитывать плотности вероятности и другие основные характеристики основных законов распределения случайных величин. Наряду с этим, в Mathcad запрограммировано соответствующее количество генераторов псевдослучайных чисел для каждого закона распределения, что позволяет эффективно проводить моделирование.
Во-вторых, предусмотрена возможность построения гистограмм и расчета статистических характеристик выборок случайных чисел и случайных процессов, таких как средние, дисперсии, корреляции и т. п. При этом случайные последовательности могут как создаваться генераторами случайных чисел, так и вводиться пользователем из файлов.
В-третьих, имеется целый арсенал средств, направленных на интерполяцию-экстраполяцию данных, построение регрессии по методу наименьших квадратов, фильтрацию сигналов. Наконец, реализован ряд численных алгоритмов, осуществляющих расчет различных интегральных преобразований, что позволяет организовать спектральный анализ различного типа.
В Mathcad имеется ряд встроенных функций, задающих используемые в математической статистике законы распределения. Они вычисляют как значение плотности вероятности различных распределений по значению случайной величины х, так и некоторые сопутствующие функции. Все они, по сути, являются либо встроенными аналитическими зависимостями, либо специальными функциями.
В Mathcad заложена информация о большом количестве разнообразных статистических распределений, включающая возможность генерации последовательности случайных чисел с соответствующим законом распределения. Для реализации этих возможностей имеются четыре основных категории встроенных функций. Их названия являются составными и устроены одинаковым образом: первая буква идентифицирует определенный закон распределения, а оставшаяся часть (ниже в списке функций она условно обозначена звездочкой) задает смысловую часть встроенной функции:
· d* (x,par) — плотность вероятности;
· р*(х,раг) — функция распределения;
· q*(P,par) — квантиль распределения;
· r* (M,раr) — вектор м независимых случайных чисел, каждое из которых имеет соответствующее распределение:
Чтобы получить функции, относящиеся, например, к равномерному распределению, вместо * надо поставить unif и ввести соответствующий список параметров par. Он будет состоять в данном случае из двух границ интервала распределения случайной величины.
Перечислим все типы распределения, реализованные в Mathcad, вместе с их параметрами, на этот раз обозначив звездочкой * недостающую первую букву встроенных функций.
· *beta (x, s1, s2) — бета-распределение (s1, s2>0 — параметры, 0<x<1).
· *binom(k,n,p) — биномиальное распределение (n — целый параметр, 0<k<n и 0<р<1 — параметр, равный вероятности успеха единичного испытания).
· *cauchy(x,l,s) — распределение Коши.
· *chisq(x,d) — χ2 ("хи-квадрат") распределение (d>0 — число степеней свободы).
· *ехр(х,r) — экспоненциальное распределение (r>0 — показатель экспоненты).
· *F(x,d1,d2) — распределение Фишера (d1,d2>0 — числа степеней свободы).
· *gamma(x,s) — гамма-распределение (s>0 — параметр формы).
· *geom(k,p) — геометрическое распределение (0<р<1 — параметр, равный вероятности успеха единичного испытания).
· *hypergeom(k,a,b,n) — гипергеометрическое распределение (а,b,n — целые параметры).
· *lnorm(х,µ, σ) — логарифмически нормальное распределение (µ— натуральный логарифм математического ожидания, σ>0 — натуральный логарифм среднеквадратичного отклонения).
· *logis (х,l,s) — логистическое распределение (1 — математическое ожидание, s>0 — параметр масштаба).
· *nbinom(k,n,p) — отрицательное биномиальное распределение (n>0 — целый параметр, 0<р<1).
· *norm(х,µ, σ) — нормальное распределение (µ— среднее значение, σ>0 — среднеквадратичное отклонение).
· *pois (k,λ) — распределение Пуассона (λ>0 — параметр).
· *t (x,d) — распределение Стьюдента (d>0 — число степеней свободы).
· *unif (х,а,b) — равномерное распределение (а<b — фаницы интервала).
· *weibuii (x, s) — распределение Вейбулла (s>0 — параметр).
В Mathcad применяются типичные алгоритмы генерации последовательностей псевдослучайных чисел, которые используют в качестве "отправной точки" некоторое начальное значение (seed value). Это начальное значение используется для того, чтобы совершить над ним определенные математические действия (к примеру, взять остаток от деления на некоторое другое число) и получить в итоге первое псевдослучайное число последовательности. Затем те же математические операции совершаются с первым числом для получения второго, и т. д.
Несложно догадаться, что если использовать все время одно и то же начальное значение генератора псевдослучайных чисел, то, открывая всякий раз новый документ со встроенной функцией получения тех или иных псевдослучайных чисел, будет выдаваться в точности одна и та же их последовательность. Сами числа внутри последовательности будут "почти" случайными (значимость этого "почти" будет зависеть только от качества алгоритма генерации), но вот сама последовательность при каждом открытии документа будет одной и той же.
Встроенные функции для генерации случайных чисел создают выборку из случайных данных Ai. Часто требуется создать непрерывную или дискретную случайную функцию A(t) одной или нескольких переменных (случайный процесс или случайное поле), значения которой будут упорядочены относительно своих переменных. В Mathcad, например, создать псевдослучайный процесс можно следующим достаточно простым
способом:
В результате получается случайный процесс A(t), радиус корреляции которого определяется расстоянием между точками, для которых строится интерполяция. Случайное поле можно создать несколько более сложным способом с помощью многомерной интерполяции.
В ядре системы Mathematica практически нет статистических функций. Зато пакет расширения Statistics дает сотни функций, охватывающих практически все разделы теоретической и прикладной статистики.
Пакет расширения Statistics содержит следующие подпакеты:
В подпакете DescriptiveStatistics сосредоточены наиболее важные функции по статистике распределений:
Глава 4 (обсуждение результатов)
Статистические пакеты находят свое широкое применение в основном в стандартных задачах статистики и облегчают вычисление, часто они полностью освобождают пользователя от математических вычислений, такие пакеты полезны только при подсчетах огромных объемов данных. Но в научно-исследовательских математических работах такие вычисления носят только вспомогательный характер и не составляют главную сложность задачи. Поэтому при выборе пакета для изучения случайных процессов следует обратить внимание на универсальные математические пакеты.
Универсальные математические пакеты имеют достаточно большой набор функций для работы со случайными процессами, во всех из них реализованы качественные алгоритмы генерации случайных величин по заданному распределению. Специализированные библиотеки предоставляют также возможность использовать готовые алгоритмы для некоторых узкоспециализированных задач, но для реальных научно-исследовательских задач в области случайных процессов готовых функций практически нет. В этом случае при выборе пакета стоит обращать внимание на удобство использования готовых функций, удобство написания функций, наличие хороших возможностей визуализации и личный опыт написания программ в каждом из рассматриваемых пакетов. В среде Matlab больший набор функций, а Matlab Simulink предоставляет отличные возможности визуализации. Поэтому пакет Matlab наиболее предназначен для работы со случайными процессами, но использование остальных универсальных пакетов также может быть весьма продуктивно.