Записи с меткой «символьной»

Сглаживание данных — DataSmoothing

Сглаживание данных — 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 + 0.2 (-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) +
0.2 (-xl-0.2 (-xl+x2) — 0.2 (-xl- 0.2 (-xl + x2) + x3) + x4) , xl+0.2(-xl + x2) +0.2(-xl-0.2(-xl + x2) +x3) + 0.2 (-xl- 0.2 (-xl+x2) -0.2(-xl-0.2(-xl + x2) + x3) + x4) + 0.2 (-xl- 0.2 (-xl+x2) — 0.2 (-xl- 0.2 (-xl+x2) + x3) —
0.2 (-xl-0.2 (-xl+x2) -0.2 (-xl-0.2 (-xl + x2) + x3) + x4) + x5)}
Применение сглаживания усреднением иллюстрирует. На нем задан массив (таблица) из 500 случайных точек с равномерным распределением и создан графический объект из этих точек в виде кружков малого диаметра. далее…

Построение гистограмм

Построение гистограмм
Ряд функций служит для подготовки данных с целью построения гистограмм:

  • 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 4- -1 (-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]
1.9525
Mean[data]
9.5
MeanDeviation[data]
1.175
Median[data]
9.3
MedianDeviation[data]
0.95
Skewness[data]
0.374139
StandardDeviation[data]
1.4938
GeometricMean[data]
9.39935
HarmonicMean[data]
9.30131
RootMeanSquare[data]
9.60221
Quantile[data,1]
12
InterpolatingQuantile[data,1]
InterpolatingQuantile[
{10.1, 9.6, 11, 8.2, 7.5, 12, 8.6, 9), 1]
Variance[data]
2.23143

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

Упрощение выражений

Упрощение выражений
Функция simplify — одна из самых мощных в системах символьной математики. Она предназначена для упрощения математических выражений. «Все гениальное просто», — любим мы повторять, хотя это далеко не всегда так. Тем не менее стремление представить многие математические выражения в наиболее простом виде поощряется в большинстве вычислений и нередко составляет их цель. В системе Maple 15 функция упрощения используется в следующем виде:

  •  simplify(expr) — возвращает упрощенное выражение ехрr или повторяет его, если упрощение в рамках правил Maple 15 невозможно;
  •  simplify(expr, nl, n2, …) —возвращает упрощенное выражение ехрr с учетом параметров с именами nl, n2, … (в том числе заданных списком или множеством);
  •  simplify(ехрг,assume=prop) — возвращает упрощенное выражение ехpr с учетом всех условий.

Функция simplify — многоцелевая. Она обеспечивает упрощение математических выражений, выполняя следующие типовые действия (для простоты обозначим их как ->):

  •  комбинируя цифровые подвыражения (3*х*5->15*х, 10*х/5->2*х);
  •   приводя подобные множители в произведениях (х^3*а*х->а*х^4); 
  •  приводя подобные члены в суммах (5*х+2+3*х->8*х+2); 
  •  используя тождества, содержащие ноль (а+0->а, х-0->х);
  •  используя тождества, содержащие единицу (1*х->х);
  •  распределяя целочисленные показатели степени в произведениях ((3*x*y^3)^2 ->9*х^2*у^6);
  •  сокращая ехрr на наибольший общий полиномиальный или иной множитель;
  •  понижая степень полиномов там, где это возможно;
  •  используя преобразования, способные упростить выражения.

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

Символьные операции

Символьные (аналитические) операции

Основные операции с выражениями
Работа с частями выражений
Выражения (ехрr) или уравнения (eqn) обычно используются как сами по себе, так и в виде равенств или неравенств. В последнем случае объекты с выражениями имеют левую и правую части. Для простейших манипуляций с выражениями полезны следующие функции:

  •  cost (а) — возвращает число сложений и умножений в выражении а (функция пакета codegen);
  •  Ihs(eqn) — выделяет левую часть eqn;
  •  rhs(eqn) — выделяет правую часть eqn;
  •  normal (ехрr) — дает нормализацию (сокращение) ехрr в виде дроби;
  •  numer(expr) — выделяет числитель ехрr;
  • Оdenom(expr) — выделяет знаменатель ехрr.

Ввиду очевидности действия этих функций ограничимся наглядными примерами их применения:

ПРИМЕЧАНИЕ
 Обратите внимание на то, что в предшествующих версиях Maple загрузка библиотеч ной функции cost выполнялась иначе — командой readlib(cost). Это обстоятельство может служить причиной неверной работы документов, созданных в старых версиях Maple, в среде описываемой версии Maple 15.
Работа с уровнями вложенности выражений
В общем случае выражения могут быть многоуровневыми и содержать объекты, расположенные на разных уровнях вложенности. Приведем две функции для оценки уровней выражений и списков:

  •  nops(expr) — возвращает число объектов первого уровня (операндов) в выражении ехрr;
  •  ор(ехрr) — возвращает список объектов первого уровня в выражении ехрr; 
  •  ор(n.ехрr) — возвращает n-й объект первого уровня в выражении ехрr. 

Ниже представлены примеры применения этих функций:

Рекомендуется просмотреть и более сложные примеры на применение этих функций в справке.

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

Основные формы записи выражений

Основные формы записи выражений
Возможны четыре основные формы записи выражений:

  • f [х, у] — стандартная форма для f [х, у];
  • f @ х — префиксная форма для f [ х ];
  • х / / f — постфиксная форма для f [ х ];
  • х ~ f ~ у — инфиксная форма для f [ х, у ].

Далее приведены примеры применения этих форм.

Ввод (In)

Вывод (Out)

F[x_] = 2*х^2

2X 2

F[a]

2a 2

a//F

2 a 2

f [x_, y_] = х^ 2 + у^2

y 2 +x 2

f[a,b]

a 2 +b 2

a-f-b

a 2 + b 2

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

Тип части

Зависимость

Пример

Function

От аргументов или параметров

Ехр[х], f [х,у]

Command

От аргументов или параметров

Expand [ (х-1) ^2]

Operator

От операндов

x + y+z, a = b

Head

От элементов

{a,b,c}

Object type

От контекста

RGBColor [r,g,b]

Работа с частями выражений напоминает работу со списками. Для выделения любой заданной части выражения используются функция Part или двойные квадратные скобки;

  • Part [expr, n] или expr [ [n] ] — выделяет п-ю часть выражения, начиная с начала;
  • expr [ [-n] ] — выделяет п-ю часть выражения, начиная с конца;
  • expr [ [nl,n2,…] ] — выделяет части выражения и показывает их в форме дерева;
  • expr [[{nl, n2,…}]] — дает комбинацию нескольких частей выражения. Приведем примеры использования этих средств.

Ввод (In)

Вывод (Out)

f :=а + b*х^2 + с*х^3

 

Part[f, 3]

ex 3

Part[f, 2]

bx 2

f[[1]]

a

f[[3]]

ex 3

f[[-1]]

ex 3

Нередко выражения рассматриваются как возможные значения переменных. В этом случае используются операторы присваивания переменным заданных значений. Mathematica имеет два типа присваивания — с помощью символов «: =» и с помощью символа «=». Они различаются временем вычисления выражения, следующего за этими символами. Знак «: =» используется для задержки присваивания до вычисления правой части, например:
f[x_] := % + 2 х
Вывода здесь нет. Продолжим наш эксперимент: 1 + у^2
1 + y2
g[х_] = % + 2 х
1 + 2 х + у2
Теперь вывод есть, так как % (ссылка на предыдущий результат) определена в виде выражения 1 + у^2 и при задании [х_] использован оператор немедленного присваивания. далее…

Компьютерная алгебра

Компьютерная алгебра

  • Работа с выражениями
  • Выделения и подстановки в функциях
  • Рекурсивные функции
  • Инверсные функции
  • Задание математических отношений
  • Упрощение выражений
  • Раскрытие и расширение выражений
  • Функции преобразования тригонометрических выражений
  • Основные операции над полиномами
  • Функции для расширенных операций с выражениями

Математические выражения — основа описания алгоритмов вычислений. Фактически, вся символьная математика основана на тех или иных видах преобразований выражений. Такие преобразования и описаны в данном уроке.
Работа с выражениями
 
Одним из важнейших понятий системы Mathematica является математическое выражение, или просто выражение — ехрг (от английского слова expression). Работа с математическими выражениями в символьном виде — основа основ символьной математики.
Выражение может быть представлено в общепринятом виде (как математическая формула или ее часть) с помощью операторов, например, а* (х + у + z) или х ^ у, оно может задавать и некоторую функцию f [х, у,…] или их комбинацию. Наряду с такой формой существует так называемая полная форма представления выражений, при которой основные арифметические операции задаются не операторами, а только соответствующими функциями. Ее примеры даны ниже.

Выражение ехрг

Полная форма ехрг

Комментарий

х + у + z

Plus [х, у, z]

Сложение

х у z

Times [x, у, z]

Умножение

х^n

Power [x,n]

Возведение в степень

{a,b,c}

List [a,b, c]

Создание списка

a->b

Rule [a,b]

Подстановка

a=b

Set [a,b]

Присваивание

Для вывода выражения ехрг в полной форме используется функция FullForm [ехрг ]. Примеры перевода выражений в полную форму:
1+х^2+(у+г)^2+2
3 + х2 + (y+z)2
FullForm[%]
Plus[3, Power[x, 2], Power[Plus[у, z] , 2]]
Integrate[a*Sin[b*x]*Exp[-c*x],x]
a [(be-cxCos[bx])/{-ib + c) (ib + c)-( ce+cxSin[bx]) \(-ib + c) (ib + c) ]
FullForm[%]
Times[a, Plus[Times[-1, b, Power[Plus[Times[Complex[0, -1], b], c] , -1], Power[Plus[Times[Complex[0, 1], b], c] , -1], Power[E, Times[-l, c, x] ] , Cos[Times[b, x] ] ] , Times[-1, c, Power[Plus[Times[Complex[0, -1], b] , c], -1] , Power[Plus[Times[Complex[0, 1] , b], c] , -1] , Power[E, Times[-1, c, x] ] , Sin[Times[b, x]]]]]
Для определения типа выражения служит функция Head [ехрr ]. Применительно к числовым выражениям она возвращает тип результата, как показано в приводимых ниже примерах.

Ввод (In)

Вывод (Out)

1+2+3

6

Head[%]

Integer

Head[123/12345]

Rational

Head[2*0.25]

Real

Следующие примеры поясняют действие функции Head для символьных выражений:

  • Head[f [x,y, z] — возвращает f;
  • Head[a+b+c] — возвращает Plus;
  • Head[x ^ n] — возвращает Power;
  • Head[ {a, b, с} ] — возвращает List.

Другая пара примеров показывает применение Head в списках с разнородными выражениями:
{Head[l + 2], Head[аЬ] , Head[ 5/7], Headfl + 3i], Head[e2]}
{Integer, Times, Rational, Complex, Power}
Head/@{l, 1/3, 2.1, 2 + 3i, x, f [x] , {1, 2, 3}, a+b, a/b}
{Integer, Rational, Real, Complex, Symbol, f, List, Plus, Times}

Обратите внимание на второй пример — в нем функция Head применяется к каждому выражению списка, что дает более компактную запись.