> f:=t->Heaviside(t)-Heaviside(t-1); # задана кусочная функция – единичный импульс
> plot(f(t),t=-1..2); # график этой функции
> laplace(f(t), t, p); ); # преобразование Лапласа от данной кусочной функции
> invlaplace((p-1)/(p^2+2*p+2),p,t); # обратное преобразование Лапласа
С
помощью преобразования Лапласа можно
решать определенный класс линейных
дифференциальных и интегральных
уравнений. В качестве примера приведем
алгоритм решения линейного неоднородного
дифференциального уравнения с постоянными
коэффициентами. Пусть требуется решить
задачу Коши
.
Предварительно подключив пакет расширения, зададим уравнение и присвоим его переменной r1:
> with(inttrans):
> r1:=diff(y(t),t$2)-3*diff(y(t),t)+2*y(t)= 2*cos(t/2)*exp(t);
Далее найдём преобразование Лапласа от обеих частей этого уравнения:
> r2:=laplace(r1,t,p);
Это громоздкое выражение целесообразно более компактно. Вместо объекта laplace(y(t),t,p), являющегося, по сути, изображением искомой функции y(t), введём обозначение Y, здесь же сделаем подстановку граничных условий:
> r3:=subs(laplace(y(t),t,p)=Y,y(0)=1,D(y)(0)=0,r2);
Это алгебраическое уравнение нужно разрешить относительно Y. Для этого используем функцию solve:
> r4:=solve(r3,Y);
От найденного выражения возьмём обратное преобразование
> invlaplace(r4,p,t);
Это и есть окончательный результат – решение дифференциального уравнения с учетом начальных условий.
Отметим, что такой способ решения применим только при условии, что функция правой части дифференциального уравнения является оригиналом. Если это не так, то решение, базирующееся на операционном методе, ищется с помощью интеграла Дюамеля.
Краткая
теоретическая справка. Преобразование
Фурье определено для абсолютно
интегрируемых, в общем случае комплексных,
функций. Фурье-образ
как функция действительной переменной
определяется формулой
и представляет собой непрерывный частотный спектр сигнала f(t). Обратное преобразование (теорема обращения):
.
Для четных и нечетных функций f(t) могут быть использованы соответственно косинус- и синус-преобразования Фурье. Пары этих преобразований (прямое и обратное) имеют вид
,
,
Косинус- и синус-преобразования также удобно применять для действительных функций f(t), заданных на полуоси [0, +). Ввиду формальной схожести формул внутри каждой пары преобразований, в Maple реализовано только по одной функции для косинус- (fouriercos) и для синус-преобразования (fouriersin).
Примеры на преобразование Фурье:
> with(inttrans):
> fourier(t*exp(-3*t)*Heaviside(t),t,w); # прямое преобразование
> invfourier(3/(1+w^2),w,t); # обратное преобразование
> simplify(",trig); # представление результата с использованием гиперболических функций
Фурье-преобразование, как и преобразование Лапласа, может применяться к решению дифференциальных уравнений. Но есть одно отличие: метод решения, основанный на преобразовании Фурье, определенно позволяет найти только частное решение, целиком зависящее от правой части уравнения. Тем самым начальные условия не учитываются (по крайней мере, полностью), вследствие чего данный метод больше подходит для анализа процессов в установившемся режиме.
Пример:
решить уравнение
.
> with(inttrans);
> de:=diff(y(t),t$2)-y(t)=exp(-t^2): # заданное уравнение
> r2:=fourier(de,t,w); # преобразование Фурье от обеих частей этого уравнения
> r3:=solve(r2,'fourier'(y(t),t,w)); # явное выражение для Фурье-образа
> rez:=invfourier(r3,w,t); # получение решения через обратное преобразование
> subs(y(t)=rez,de): simplify("); # проверка решения подстановкой в уравнение
Решение еще одного уравнения проведем на основе косинус-преобразования:
> with(inttrans);
>
de:=
diff(y(t),t$2)-y(t)=cos(2*t): #
решается
уравнение
> r2:= fouriercos(de,t,w); # косинус-преобразование
> r3:=solve(r2,'fouriercos'(y(t),t,w)); # Фурье-образ решения уравнения
> rez:= fouriercos(r3,w,t); # обратное cos-преобразование даёт само решение
Строго говоря, в этом выражении к частному решению данного неоднородного уравнения относится только второе слагаемое, а первое слагаемое с начальным значением D(y)(0), т.е. y(0), в качестве сомножителя – это «осколок» от общего решения.
> subs(y(t)=rez,de); # подстановка найденного решения в исходное уравнение
> simplify(");
Если внимательно посмотреть на последний пример, может показаться странным, что Maple вычисляет преобразование Фурье от функции правой части, не являющейся оригиналом по Фурье, т.е. абсолютно интегрируемой, для которой в классе обычных функций такое преобразование, вообще говоря, существовать не должно. Но в том то и дело, что Maple не ограничивается обычными функциями и преобразует расширенный класс оригиналов за счет аппарата обобщенных функций. Изучение последних выходит за рамки изучения курса математики технических специальностей вузов.
Разложение периодической функции в тригонометрический ряд Фурье
Ранние версии Maple (в том числе Maple V) не содержат готовых встроенных функций по решению подобных задач гармонического анализа. Однако не составит большого труда непосредственно запрограммировать вычисление коэффициентов ряда Фурье. Изучите внимательно следующий пример.
Задача:
разложить функцию
на интервале
–<t<.
> restart;
> f:=t->abs(t);
> a0:=(1/Pi)*int(f(t),t=-Pi..Pi); # коэффициент разложения a0
> assume(n,integer); # считать переменную n целочисленной
> an:=(1/Pi)*int(f(t)*cos(n*t),t=-Pi..Pi); # коэффициенты разложения an
(Значок , используемый сразу после имени переменной, пишется для напоминания об ограниченном множестве ее допустимых значений).
Учитывая, что четная функция содержит только четные гармоники, все коэффициенты bn равны нулю. Поэтому разложение функции в ряд Фурье имеет вид
,
Этот результат можно конкретизировать, рассматривая сумму с четными и нечетными индексами:
> assume(m,integer);
> simplify(an,{n=2*m}):# коэффициенты an с четными номерами
> simplify(");
0
> assume(k,integer);
> simplify(an,{n=2*k+1}): ak:=simplify("); # an с нечетными номерами