Компания ALT Linux
Опубликован: 24.03.2015 | Доступ: свободный | Студентов: 550 / 136 | Длительность: 19:00:00
Лекция 3:

Задачи высшей математики с Maxima

3.8.4 Операторный метод решения

Для решения систем обыкновенных линейных дифференциальных уравнений в Maxima имеется функция desolve. Работа функции desolve основана на преобразовании Лапласа заданных дифференциальных уравнений.

Пусть задана функция действительного переменного f(t), которая удовлетворяет следующим условиям:

  1. однозначна и непрерывна вместе со своими производными n-го порядка для всех t > 0, кроме тех, где она и ее производные имеют разрывы 1-го рода. При этом в каждом конечном интервале изменения имеется конечное число точек разрыва;
  2. f(t) = 0 для всех t > 0;
  3. возрастает медленнее некоторой экспоненциальной функции M\cdot e^{at}, где M и a — некоторые положительные величины, т.е. всегда можно указать такие M и a, чтобы при любом t > 0 соблюдалось неравенство |f(t)| < M \cdot e^{at}.

Рассматриваемой функции f(t) ставится в соответствие новая функция, определяемая равенством

F(s) = L \{ f (t)\} = \int \limits_0^{\infty} e^{&#8722;st} f (t) dt,
где s — положительное действительное число или комплексное число с положительной действительной частью.

Функция f(t) при этом называется оригиналом, а F(s) — изображением функции f(t) по Лапласу. Переход от оригинала к изображению называется преобразованием Лапласа. Соответственно, обратный переход от изображения к оригиналу называется обратным преобразованием Лапласа.

Для преобразования Лапласа выполняется теорема единственности: если две непрерывные функции f(x) и g(x) имеют одно и то же изображение по Лапласу F(p), то они тождественно равны.

С помощью операционного исчисления можно сравнительно просто решать различные задачи, сводящиеся к интегрированию линейных дифференциальных уравнений. Переход от исходных функций к их изображениям позволяет заменить решение системы дифференциальных уравнений решением системы алгебраических уравнений (но при этом обратное преобразование Лапласа может быть достаточно сложной задачей).

При вычислении преобразования Лапласа производные заменяются алгебраическими выражениями следующего вида:

pF(p) - f(0) = f'(t)
p^2F(p) - pf(0) - f'(0) = f''(t)
и т.д., поэтому использование преобразования Лапласа для решения систем ОДУ требует задания начальных условий.

Использование desolve ограничивается одним из свойств преобразования Лапласа: если L{f(t)} = F(s), то L{tf(t)} = -F(s). Поэтому desolve предполагает, что решается система ОДУ с постоянными коэффициентами.

Синтаксис вызова desolve: desolve(delist,fnlist), где delist — список решаемых дифференциальных уравнений, fnlist — список искомых функций. При использовании desolve необходимо явно задавать функциональные зависимости (вместо 'diff(y,x) использовать запись diff(y(x),x)).

Примеры использования desolve:

Система ОДУ первого порядка:

(%i1)	de1:diff(f(x),x)=diff(g(x),x)+sin(x);
\frac{d}{d\,x}\,f\left( x\right) =\frac{d}{d\,x}\,g\left( x\right) +sin\left( x\right) \leqno{(\%o1) }
(%i2)	de2:diff(g(x),x,2)=diff(f(x),x) - cos(x);
\frac{{d}^{2}}{d\,{x}^{2}}\,g\left( x\right) =\frac{d}{d\,x}\,f\left( x\right) -cos\left( x\right) \leqno{(\%o2) }
(%i3)	desolve([de1,de2],[f(x),g(x)]);
[f\left( x\right) ={e}^{x}\left( \left. \frac{d}{dx}\,g\left( x\right) \right|_{x=0}\right) -\left. \frac{d}{dx}g\left( x\right) \right|_{x=0}+f\left( 0\right) ,\leqno{(\%o3) }
g\left( x\right) ={e}^{x}\left( \left. \frac{d}{dx}g\left( x\right) \right|_{x=0}\right) -\left. \frac{d}{dx}g\left( x\right) \right|_{x=0}+cos\left( x\right) +g\left( 0\right) -1]

Единичное дифференциальное уравнение второго порядка:

(%i1)	de3:diff(f(x),x,2)+f(x) = 2*x;
\frac{{d}^{2}}{d\,{x}^{2}}\,f\left( x\right) +f\left( x\right) =2\,x\leqno{(\%o1) }
(%i2)	desolve(de3,f(x));
f\left( x\right) =sin\left( x\right) \,\left( \left. \frac{d}{d\,x}\,f\left( x\right) \right|_{x=0}-2\right) +f\left( 0\right) \,cos\left( x\right) +2\,x\leqno{(\%o2) }

Для указания начальных условий используется функция atvalue.

Синтаксис вызова: atvalue(expr, [x_1 = a_1,...,x_m = a_m],c) atvalue(expr,x_1 = a_1,c)

Функция atvalue присваивает значение c выражению expr в точке x = a. Выражение expr — функция f(x_1,... ,x_m) или производной diff(f(x_1,...,x_m),x_1,n_1,...,x_n,n_m) Здесь n_i — порядок дифференцирования по переменной x_i.

Пример использования desolve и atvalue:

(%i1)	de1:diff(f(x),x)=diff(g(x),x)+sin(x);
\frac{d}{d\,x}\,f\left( x\right) =\frac{d}{d\,x}\,g\left( x\right) +sin\left( x\right) \leqno{(\%o1) }
(%i2)	de2:diff(g(x),x,2)=diff(f(x),x) - cos(x);
\frac{{d}^{2}}{d\,{x}^{2}}\,g\left( x\right) =\frac{d}{d\,x}\,f\left( x\right) -cos\left( x\right) \leqno{(\%o2) }
(%i3)	atvalue(f(x),x=0,1);
1\leqno{(\%o3) }
(%i4)	atvalue(g(x),x=0,2);
2\leqno{(\%o4) }
(%i5)	atvalue(diff(g(x),x),x=0,3);
3\leqno{(\%o5) }
(%i6)	desolve([de1,de2],[f(x),g(x)]);
[f\left( x\right) =3\,{e}^{x}-2,g\left( x\right) =cos\left( x\right) +3\,{e}^{x}-2]\leqno{(\%o6) }

Управление начальными условиями осуществляется при помощи функций properties и prontprops. Функция properties (синтаксис вызова — properties(a)) печатает свойства переменной (атома a), а функция printprops печатает информацию о заданном свойстве переменной. Кроме того, функция at вычисляет значение выражения в заданной точке с учетом свойства atvalue.

Синтаксис вызова printprops:

  • printprops(a,i)
  • printprops([a1,... ,an],i)
  • printprops(all,i)

Данная функция позволяет просмотреть свойства атома a (или группы атомов Lisp, указанных в списке), определённые индикатором i.

Отмена установок, произведённых atvalue, осуществляется функцией remove (удаление свойства p у атомов a_1,... ,a_n осуществляется вызовом remove(a1,p1,... ,an,pn); удаление списка свойств — вызовом remove([a_1,... ,a_m], [p_1,... ,p_n],...)).

Пример синтаксиса и использования рассмотренных функций:

(%i1)	eq1:'diff(f(x),x)='diff(g(x),x)+sin(x);
\frac{d}{d\,x}\,f\left( x\right) =\frac{d}{d\,x}\,g\left( x\right) +sin\left( x\right) \leqno{(\%o1) }
(%i2)	eq2:'diff(g(x),x,2)='diff(f(x),x)-cos(x);
\frac{{d}^{2}}{d\,{x}^{2}}\,g\left( x\right) =\frac{d}{d\,x}\,f\left( x\right) -cos\left( x\right) \leqno{(\%o2) }
(%i3)	atvalue('diff(g(x),x),x=0,a);
a\leqno{(\%o3) }
(%i4)	atvalue(f(x),x=0,1);
1\leqno{(\%o4) }
(%i5)	properties(f);
[atvalue]\leqno{(\%o5) }
(%i6)	printprops(f,atvalue);
f\left( 0\right) =1
done\leqno{(\%o6) }
(%i7)	desolve([eq1,eq2],[f(x),g(x)]);
[f\left( x\right) =a\,{e}^{x}-a+1,g\left( x\right) =cos\left( x\right) +a\,{e}^{x}-a+g\left( 0\right) -1]\leqno{(\%o7) }
(%i8)	at(%,[x=1]);
[f\left( 1\right) =e\,a-a+1,g\left( 1\right) =e\,a-a+cos\left( 1\right) +g\left( 0\right) -1]\leqno{(\%o8) }

Ещё один пример анализа свойств:

(%i9)	atvalue (f(x,y), [x = 0, y = 1], a^2);
{a}^{2}\leqno{(\%o9) }
(%i10)	atvalue ('diff (f(x,y), x), x = 0, 1 + y);
@2+1\leqno{(\%o10) }
(%i11)	printprops (all, atvalue);
\left. \frac{d}{d\,@1}\,g\left( @1\right) \right|_{[@1=0]}=a\\
\left. \frac{d}{d\,@1}\,f\left( @1,@2\right) \right|_{[@1=0]}=@2+1\\
f\left( 0,1\right) ={a}^{2}\\
f\left( 0\right) =1
done\leqno{(\%o11) }