В этом уроке мы научились:
Находить разложения заданных функций и выражений в ряды Тейлора и Маклорена. Удалять член с остаточной погрешностью ряда. Представлять разложение в ряд графически. Осуществлять прямое и обратное дискретные преобразования Фурье.Подпакет FourierTransform пакета Calculus в версии Mathematics 3 служит для осуществления расширенных преобразований Фурье. Он вызывается командой
<<Calculus` FourierTransform`
Ввиду важности этих преобразований в системе Mathematica 4 их функции были размещены уже в ядре системы. Это следующие функции:
FourierTransform [expr, t, w] — возвращает результат прямого преобразования Фурье над выражением expr [t], выраженного через переменную w; InverseFourierTransform[expr, w, t] — возвращает результат обратного преобразования Фурье над выражением expr[w], выраженного через переменную t; FourierCosTransform[expr, t, w] — возвращает результат косинусного преобразования Фурье над выражением expr [t ], выраженного через переменную w; FourierSinTransform[expr, t, w] — возвращает результат синусного преобразования Фурье над выражением expr [t], выраженного через переменную w; FourierTransform [expr, {tl,t2}, {wl, w2 } ] — возвращает результат прямого преобразования Фурье над выражением expr [ tl, t2,...], выраженного через переменные {wl, w2,-...}; InverseFourierTransformtexpr, {tl,t2}, {wl,w2} ]'— возвращает результат обратного преобразования Фурье над выражением expr [ wl, wl,...], выраженного через переменные {tl, t2,...}.,Примеры осуществления прямого и обратного преобразований Фурье представлены ниже:
FourierTransform[Sin[t]*t:2, t, w]
-Iл(DiracDelta"[l - w] - DiracDelta" [1 + w])
InverseFourierTransform[%, w, t]
t2Sin[t]
FourierCosTransform[Sin[t]*t:2, t, w]
-8w2/(1-w2)3-2/(1-w2)2
FourierSinTransform[Cos[a*t], t, w]
-w/(a2-w2)
FourierTransform[tl^2 Exp[-a t2] UnitStep[tl, t2],
{tl, t2}, {wl, w2}]
-2I/w13-лDiracDelta''[w1]/a-IW2
InverseFourierTransformtwl/(l-b*w2), {wl, w2}, {tl, t2}]
Для реализации спектрального анализа и синтеза имеются следующие функции:
FourierExpSeries [expr, {x, xmin, xmax), n] — возвращает разложение expr [х] в экспоненциальный ряд Фурье с n членами на отрезке {xmin, xmax}; FourierExpSeriesCoef f icient [expr, {x, xmin, xmax} ,n] —возвращает коэффициенты разложения expr [x] в экспоненциальный ряд Фурье с n членами на отрезке {xmin, xmax}; FourierTrigSeries [expr, {x, xmin, xmax}, n] — возвращает разложение expr [x] в тригонометрический ряд Фурье с n членами на отрезке {xmin, xmax}; FourierSinSeriesCoef f icient [expr, {x, xmin, xmax}, n] —возвращает синусные коэффициенты разложения expr [x] в тригонометрический ряд Фурье с n членами на отрезке {xmin,xmax}; FourierCosSeriesCoef f icient [expr, {x, xmin, xmax}, n] —возвращает косинусные коэффициенты разложения expr [x] в тригонометрический ряд Фурье с n членами на отрезке {xmin, xmax}.
Рисунок 5.12 иллюстрирует создание пилообразного сигнала, его разложение в тригонометрический ряд Фурье с п = 4, графическое воспроизведение сигнала и его представление суммой из четырех гармоник (на рисунке оставлены только совмещенные графики).
Нередко исходные данные при решении математических задач представлены рядом точек произвольной зависимости вида у(х). Сама по себе эта зависимость может быть неизвестной. Для вычисления промежуточных значений функции используется аппарат интерполяции. При нем истинная функция заменяется аппроксимирующей функцией, которая в узловых точках дает точные значения ординат и позволяет вычислить значения интерполируемой функции в промежуточных точках.
Интерполяция может быть очень полезной при решении задач моделирования нелинейных цепей как с обычными (например, электронные лампы и транзисторы), так и с «необычными» активными приборами, например туннельными диодами или лавинными транзисторами.
Одна из проблем такого моделирования — задание нелинейных вольт-амперных характеристик (ВАХ) активного прибора. Mathematica позволяет задать такие ВАХ, используя различные виды интерполяции и аппроксимации — от кусочно-линейной до полиномиальной или сплайновой. Рисунок 5.22 демонстрирует простое табличное задание N-образной ВАХ туннельного диода с полиномиальной интерполяцией (используется полином четвертой степени). Обратите внимание на применение импортируемого рисунка — схемы цепи. Он готовился отдельно в графическом редакторе.
Рис. 5.22. Начало документа, позволяющего моделировать схему на туннельном диоде
Рисунок 5.23 показывает часть документа, в которой выполнено математическое моделирование поведения схемы с момента ее включения. Для моделирования используется известная система из двух нелинейных дифференциальных уравнений, решаемая с помощью встроенной функции NDSolve (эта система записана первой в списке параметров данной функции). Полученные в результате моделирования временные зависимости напряжения на туннельном диоде и тока во внешней цепи показаны ниже. Они свидетельствуют о возникновении в цепи стационарных и почти синусоидальных колебаний. Таким образом, цепь выполняет функции генератора высокочастотных колебаний
Рис. 5.23. Моделирование возникновения и установления синусоидальных колебаний в схеме на туннельном диоде
Поведение схемы очень наглядно характеризует фазовый портрет колебаний, представленный на рис. 5.24 и построенный на фоне интерполированной ВАХ туннельного диода и линии нагрузки резистора Rs, задающей положение рабочей точки на падающем участке ВАХ. В этом случае туннельный диод вносит во внешнюю цепь отрицательную дифференциальную проводимость, что и ведет к возможности возникновения гармонических или релаксационных колебаний (уменьшив С или увеличив L, вы можете посмотреть, как происходит переход к релаксационным колебаниям).
Для решения задач интерполяции и аппроксимации функций, заданных рядом узловых точек, в Mathematica используются следующие функции:
InterpolatingFunctionfrange, table] — возвращает интерполирующую функцию, позволяющую вычислять промежуточные значения в заданном диапазоне range для таблицы table; InterpolatingPolynomial [data, var] — возвращает полином (степенной многочлен) по переменной var, значения которого в узловых точках точно совпадают с данными из списка data. Он может иметь форму { {xl, f1}, {х2, f2},...} или {fl, f2,...} (во втором случае xi принимают значения 1, 2,...). Вместо fi может быть список {fi, dfi, ddfi,...}, указывающий значения производных в точках xi; Interpolation [data] — конструирует объект InterpolatingFunction.InterpolationOrder — опция функции Interpolation, указывающая степень подходящего полинома. При ее значении, равном 1, осуществляется кусочно-линейная интерполяция. Целое значение, большее единицы, задает степень глобальной полиномиальной интерполяции.
Применение основной функции Interpolation поясняет следующий пример:
data = ТаЫе[{х, х^2 + 1}, {х, 1, 5}]
{{1, 2}, {2, 5}, {3, 10}, {4, 17}, {5, 26}}
funi = Interpolation[data]
InterpolatingFunctionf{{1, 5}}, 0]
{funi [1.5], funi[3], funi[4.5]}
{3.25, 10, 21.25}
Таким образом, на заданном отрезке изменения х функция Interpolation позволяет найти любое промежуточное значение функции funi [x], в том числе значения в узловых точках.
Теперь рассмотрим часто используемую полиномиальную аппроксимацию, при которой ищется полином, график которого точно проходит через узловые точки данных.
Степень интерполирующего (и аппроксимирующего) полинома всегда на 1 меньше числа узловых точек интерполяции или аппроксимации. Аппроксимация отличается от интерполяции тем, что предполагает получение аппроксимирующей функции в явном виде. При полиномиальной аппроксимации такой функцией является степенной многочлен.
Пример на рис. 5.13 иллюстрирует технику проведения полиномиальной аппроксимации с применением интерполирующего степенного многочлена.
Разложение функций в ряды Тейлора и Маклорена Удаление члена с остаточной погрешностью ряда Графическая визуализация разложения в ряд Прямое и обратное дискретные преобразования Фурье Спектральный анализ на основе преобразования Фурье Фильтрация сигналов на основе преобразований Фурье Полиномиальная интерполяция и аппроксимация Регрессия и визуализация ее результатов Спектральный анализ таблично заданных сигналов с интерполяцией Моделирование нелинейных цепей с применением интерполяции
Представление и обработка данных — еще один класс математических задач, имеющих явно практическую направленность. В этом уроке мы рассмотрим ряд средств решения этих задач — начиная с общеизвестного разложения аналитических функций в ряды Тейлора и Маклорена и кончая различными видами аппроксимации, интерполяции и регрессии. Будут также затронуты прикладные вопросы применения интерполяции при спектральном анализе сигналов и моделировании нелинейных электрических и электронных цепей.
Основные понятия о спектральном анализе и синтезе
Спектральный подход (метод) лежит в основе целых направлений науки и техники. Достаточно отметить, что он плодотворно используется в технике электро- и радиосвязи, где разделение частот модулированных сигналов базируется на различии их спектров. Спектральный подход также широко используется для создания аналоговых и цифровых фильтров и для оценивания искажений сигналов в ходе их преобразования, например усиления реальными усилителями.
Схема применения спектрального подхода достаточно проста. Сигнал вначале представляется совокупностью гармонических составляющих — гармоник ~ в виде тригонометрического ряда Фурье. Для точного представления сигнала требуется бесконечное число гармоник, но на практике оно всегда ограничено. Такое ограничение порождает волнообразный характер изменения сигнала и появление выбросов, что известно под названием эффекта Гиббса.
Получение сигнала в виде суммы гармонических составляющих получило название спектрального анализа. Суммирование гармоник сигнала и его приближенное представление во временной области называется гармоническим синтезом сигнала.
Итак, спектральный подход заключается в следующем. Вначале получают достаточно представительный (с большим числом гармоник) спектр заданного сигнала. Довольно часто используют тестовые сигналы в виде прямоугольных, треугольных, пилообразных и других импульсов. Для моделирования таких сигналов можно использовать различные функции, например, Sign [Sin [t] ] позволяет получить симметричные прямоугольные импульсы (меандр), а Abs [Sin [t] ] моделирует результат двухполупериодного выпрямления синусоидального напряжения. Для получения разрывных сигналов можно использовать функции с условиями сравнения, например функцию If (на рис. 5.4 даны примеры имитации с помощью этой функции импульсов прямоугольной и пилообразной формы).
Для многих частных видов сигналов (а к ним относится большинство тестовых сигналов) разложения в ряд Фурье хорошо известны и приводятся в любом математическом справочнике (иногда в несколько разных формах).
Это позволяет сразу получить нужное число гармоник сигнала и, что особенно важно, проверить, насколько адекватно синтезируемый сигнал описывает реальный сигнал.
На рис. 5.5 показан пример прямого синтеза разнополярных коротких прямоугольных импульсов. Используется известное разложение их в ряд, причем графики построены для 5 и 20 гармоник. Нетрудно заметить, что даже при двадцати гармониках представление такого сигнала гармоническим рядом не очень точно — отчетливо наблюдаются колебания и выбросы, то есть эффект Гиббса.
Для представления временных зависимостей (сигналов) в виде набора гармоник в общем случае (и в системе Mathematica) используется прямое дискретное преобразование Фурье (ДПФ), а для обратного преобразования спектра во временную зависимость — обратное дискретное преобразование Фурье. Математические основы этих преобразований хорошо известны и описаны в соответствующей литературе. В Mathematica 4 имеются следующие основные функции для осуществления дискретного преобразования Фурье:
Fourier [list] — осуществляет дискретное преобразование Фурье для списка list комплексных чисел; InverseFourier [list] — осуществляет дискретное обратное преобразование Фурье списка list комплексных чисел.Параметром list этих функций в общем случае является список, содержащий комплексные числа. Последовательное применение прямого и обратного преобразований Фурье должно приводить к результату, совпадающему с исходными данными (в пределах малой погрешности). Это хорошо подтверждает следующий пример:
DF:=Fourier[{1,1,0,0}]
DF
{1. + 0.I, 0.5+0.51, 0. + 0.I, 0.5-0.51}
IF:=InverseFourier[DF]
IF
{1.+ 0. I, 1. + 2.77556х10-171, 0. + 0. I, 0. -2.77556x 10-17I}
Разумеется, этот пример носит исключительно тестовый характер. Используя множество возможностей работы с комплексными числами, можно решать различные задачи спектрального анализа и синтеза сигналов различной формы.
Применение описанных функций имеет некоторые тонкости. Прежде всего надо отметить, что отсчет элементов векторов начинается не с нуля, а с единицы. Поэтому нулевая гармоника (в электро- и радиотехнике ее называют постоянной составляющей разлагаемой в ряд Фурье зависимости) соответствует индексу 1, первая гармоника — индексу 2 и т. д. Таким образом, имеет место смещение нумерации индексов на единицу.
Согласно теореме отсчетов, именуемой также теоремой Котельникова, если функция имеет N отсчетов, то максимальное число гармоник спектрального разложения равно N/2. Между тем, функция Fourier в системе Mathematica дает все N элементов создаваемого ею вектора.
При этом на спектрограмме «лишние» гармоники на деле просто образуют зеркальное отображение реально возможных N/2 гармоник. Именно поэтому двойное (прямое и обратное) преобразование Фурье в системе Mathematica 3/4 почти идеально точно восстанавливает исходный вектор.
Еще одна тонкость связана с необычным представлением нулевых мнимых частей элементов векторов, получаемых в ходе преобразований. Они записываются в виде 0.1. Для их устранения может использоваться функция Chop [V].
Для лучшего понимания особенностей спектрального анализа и синтеза рекоменду.ется внимательно ознакомиться с формулами преобразований Фурье, которые можно найти в справочной системе, благо эти формулы вполне понятны даже тем, кто не силен в английском языке. В литературе подобные формулы встречаются в нескольких различных видах, что порождает некоторые трудности в интерпретации и нормировке результатов спектрального анализа и синтеза. Поэтому полезно познакомиться с дополнительными и вполне конкретными примерами, приведенным ниже.
Одна из широко распространенных математических задач представления данных — разложение заданной аналитической функции в степенной ряд Тейлора относительно некоторой узловой точки с абсциссой хО. Такой ряд нередко проще самой функции (в том смысле, что не требует вычисления даже элементарных функций и вычисляется с помощью только арифметических операций) и дает единообразное представление для разлагаемых функций в виде обычных степенных многочленов.
Большинство достаточно гладких функций, не имеющих разрывов в области р"аз-ложения, довольно точно воспроизводятся рядом Тейлора. Как правило, такие разложения достаточно просты в окрестностях узловой точки разложения.
Для разложения в ряд используются следующие функции системы Mathematical
Series[f, {х, х0, п}]— выполняет разложение в степенной ряд функции f в окрестности точки х=х0 по степеням (х-х0) ^ n; Series [f, {х, х0, nх}, {у, у0, nу}] — последовательно ищет разложения в ряд сначала по переменной у, затем по х; SeriesCoef ficient [s,n] — возвращает коэффициент при переменной n-й степени ряда s; SeriesData [х, х0, {а0, al,...}, nmin, nmax, den] —представляет степенной ряд от переменной х в окрестности точки х0. Величины ai являются коэффициентами степенного ряда. Показатели степеней (х-х0) представлены величинами nmin/den, (nmin+1) /den, ..., nmax/den.Суть разложения функции в степенной ряд хорошо видна из разложения обобщенной функции/(д:), представленного на рис. 5.1 (выходные ячейки имеют стандартный формат).
Рис. 5.1. Разложение в ряд обобщенной функции f(x)
В первом примере разложение идет относительно исходной точки х0=0, что соответствует упрощенному ряду Тейлора, часто называемому рядом Маклорена. Во втором случае разложение идет относительно исходной точки х0, отличной от нуля. Обычно такое разложение сложнее и дает большую остаточную погрешность.
В соответствии с принятой математической символикой эта погрешность обозначается как О [x]
i
с показателем степени, указывающим на порядок погрешности.
Следует отметить, что разложение в ряд использует особый формат вывода, частью которого и является член остаточной погрешности. На рис. 5.2 показано разложение в ряд Тейлора для нескольких функций, причем вывод дан в стандартной форме.
Еще один широко используемый вид аппроксимации — регрессия. Она заключается в нахождении параметров некоторой функции регрессии, при которой график этой функции проходит в «облаке» узловых точек, обеспечивая наименьшую среднеквадратичную погрешность их представления. В отличие от интерполяции, при регрессии найденная функция не дает точного значения ординат в узловых точках — она просто минимизирует погрешность вычислений в этих точках.
Для решения задач регрессии используется функция ядра
Fit: Fit[data, funs, vars]
Эта функция ищет приближение для списка данных data методом наименьших квадратов в виде линейной комбинации функций funs переменных vars. Данные data могут иметь форму {{xl, yl,..., f1}, {х2, у2,..., f2 },...}, где число координат х, у,... равно числу переменных в списке vars. Также данные data могут быть представлены в форме {f 1, f 2, =..} с одной координатой, принимающей значения 1, 2... Аргумент funs может быть любым списком функций, которые зависят только от объектов vars.
Следующие примеры показывают приближение исходных данных степенным полиномом и линейной комбинацией двух функций:
Fit[{{0, 0.9}, {2, 8.099999999999999), {3, 17}, {4, 33}}, {а, х, х2}, х]
0. 997273-1.40864 х+2.33409 х2
Fit[{{0, 0.9}, {2, 8.099999999999999}, {3, 17}}, {х2, Ехр[х], х} , х]
0.9ех + 2.89276х- 1.08392 х2
Здесь в первом примере выполняется полиномиальная регрессия со степенью полинома, равной 2. Максимальная степень на 1 меньше числа пар исходной зависимости (в нашем случае их 4) — при такой степени регрессия вырождается в обычную полиномиальную аппроксимацию, которая рассматривалась ранее.
Рисунок 5.14 показывает несколько иной путь проведения полиномиальной аппроксимации — исходные данные заданы объектом-списком data.
В конце документа рис. 5.14 показано построение графика аппроксимирующего полинома второй степени и точек исходных данных. Заметно, что при регрессии график полинома проходит в середине «облака» исходных точек и не укладывается на них точно.
В уроке 12 будут рассмотрены дополнительные функции для проведения регрессии. Они входят в различные пакеты расширения системы Mathematica 3/4.
Рис. 5.14. Полиномиальная регрессия с графическим выводом
Итак, прямое преобразование Фурье означает перевод временного представления сигнала в частотное. Другими словами, оно позволяет получить частотный спектр сигнала, представленного отсчетами его временной зависимости. Нередко это является конечной целью спектрального анализа.
На рис. 5.7 представлен пример спектрального анализа простого сигнала — треугольного импульса, заданного с помощью функции If. Затем с помощью функции Fourier прямого преобразования Фурье получены в явном виде векторы амплитуд Мg и фаз Аg гармоник этого сигнала.
Рис. 5.7. Спектральный анализ пилообразного импульса на основе прямого преобразования Фурье
На рис. 5.8 представлено продолжение документа, показанного на рис. 5.7. Здесь с помощью графиков лестничного типа, подчеркивающих дискретность гармоник, построены спектрограммы амплитуд и фаз гармоник пилообразного импульса. Хорошо видно симметричное отражение линий спектра относительно восьмой гармоники — в нашем случае имелось 16 отсчетов сигнала. Это значит, что амплитуда и фаза девятой гармоники те же, что у седьмой гармоники, у десятой — те же, что у шестой, и т. д.
Рис. 5.8. Спектрограммы амплитуд и фаз гармоник пилообразного импульса
Теперь рассмотрим более сложный случай — получение спектра сложного сигнала (рис. 5.9). :
Рис. 5.9. Получение спектра сложного сигнала с помощью прямого преобразования Фурье
В начале этого рисунка показано формирование синусоидального сигнала с частотой 50 Гц, на который наложена значительная по амплитуде шумовая составляющая. Она создается добавлением к отсчетам сигнала случайных величин, созданных генератором случайных чисел.
Во второй части рисунка показан график частотных отсчетов, полученных после прямого преобразования Фурье. На нем отчетливо виден пик в районе частоты 50 Гц (поскольку первый элемент результирующего списка соответствует нулевой частоте, этот пик возникает на 51-м элементе списка). Однако помимо него существует еще один пик на частоте 256 - 50 = 206 Гц. Он связан с отмеченным ранее свойством симметрии спектра вещественного сигнала.
Как уже отмечалось, одной из проблем точного представления сигналов при гармоническом синтезе является ограничение числа гармоник, связанное с конечностью числа отсчетов сигнала. К примеру, если вещественный сигнал задан 20 отсчетами, то максимальное число гармоник будет всего 10, что недостаточно для хорошего представления большинства реальных сигналов.
Ниже описан путь преодоления этого ограничения. Он основан на интерполяции сигнала, что позволяет при ограниченном числе его отсчетов (выборок) использовать любое число дополнительных отсчетов. Разумеется, при этом строится спектр интерполированного сигнала, но он может представлять реальный сигнал гораздо лучше, чем просто ограниченный N/2 гармониками спектр сигнала с малым числом выборок.
Еще одна проблема при спектральном анализе связана с необходимостью нормировки коэффициентов Фурье. Их расчет по аналитическим формулам не является достаточно эффективным — уже давно доказано, что если сигнал представлен отдельными выборками, то единственно обоснованным методом вычисления интегралов (коэффициентов) Фурье является простейший метод прямоугольников. Это обстоятельство также учтено в описанном ниже документе (вполне законченном «блокноте» системы Mathematica).
Пусть сигнал задан N отсчетами. На рис. 5.15 показан пример задания достаточно сложного сигнала путем формирования вектора его ординат Yi (индекс i от 1 до 20). Пусть сигнал задан на периоде Т = 4*10^-6 с, что соответствует частоте f 1 основной гармоники сигнала, равной 250 кГц. Рисунок 5.15 поясняет технику нормировки сигнала и построения его графика с реальной шкалой времени (то есть на отрезке времени от 0 до Т).
Рис. 5.15. Задание сигнала, его кусочно-линейная интерполяция и построение графика временной зависимости
При построении графика сигнала и его временной зависимости использована наиболее широко применяемая на практике техника кусочно-линейной интерполяции. Однако изменением значения опции InterpolationOrder можно выполнить и глобальную полиномиальную аппроксимацию сигнала, которая может быть предпочтительна для гладких сигналов.
Рисунок 5.20 показывает задание амплитудно-частотной и фазо-частотной (ФЧХ) характеристик некоего фильтра, ослабляющего высокие частоты и вносящего фазовый сдвиг, пропорциональный частоте сигнала. В нижней части рисунка построены эти характеристики. Заметим, что здесь АЧХ и ФЧХ заданы без «хитростей», присущих решению аналогичной задачи с применением встроенных функций дискретного преобразования Фурье. Они задаются в явном виде как функции от частоты.
Рис. 5.20. Амплитудно-частотная и фазочастотная характеристики фильтра
Рисунок 5.21 показывает, как влияет на форму сигнала его прохождение через фильтрующую цепь. Для оценки этого используется формула синтеза гармоник. Однако отличные от нуля амплитуды гармоник умножаются на модуль коэффициента передачи (АЧХ) фильтра, а к фазе каждой гармоники добавляется фазовый сдвиг, вносимый фильтром (ФЧХ). Таким образом, в процессе синтеза временной зависимости сигнала учитываются амплитудно-частотные и фазо-частотные искажения сигнала фильтром.
Рис. 5.21. Сравнение исходной временной зависимости сигнала и сигнала на выходе фильтрующей цепи
Рассмотренный документ является хорошей иллюстрацией применения системы Mathematica для решения нестандартных задач и реализации альтернативных методов их решения. В частности, в данном случае спектральный анализ и синтез велись по типичной для инженерных расчетов методике и без использования встроенных функций преобразования Фурье.