Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Решение дифференциальных уравнений



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

dsolve( deqns, vars ) или dsolve( deqns, vars, eqns ).

Здесь deqns – обыкновенное дифференциальное уравнение или система уравнений и начальных условий;

vars – переменная или набор переменных, относительно которых необходимо решить уравнения;

eqns – этот параметр может принимать значения: type=exact, type=series, type=numeric, explicit=true, explicit=false, method=laplace, type=series, output=basis, type=numeric.

Функция dsolve способна найти решения в замкнутом виде для многих дифференциальных уравнений. Если задан параметр type=exact (по умолчанию), то система пытается найти точное аналитическое решение. Решение возвращается в виде уравнения y(x) или в параметрической форме вида x=f(_T), y(x)=g(_T), где _T – параметр. Константы, входящие в общее решение, представляются в виде _C1, _ C2,..., _ Cn.

Если задан параметр explicit=true, то решение, по возможности, будет возвращено в явном виде. По умолчанию считается explicit=false.

Значение method=laplace задаёт способ решения с использования преобразования Лапласа. Одно из преимуществ этого метода – то, что в этом случае уравнения могут содержать функции с особенностями, например Дирака или Хевисайда.

Значение type=series задаёт метод решения в рядах. Порядок решения определяется значением переменной среды Order. Напомним, что формальные производные можно задавать с помощью оператора D. Например, вторая производная функции y в точке 0 может быть записана как D(D( y ))( 0 ) или (D@@2)( y )( 0 ).

По значению output=basis система возвращает список, содержащий множество функций, входящих в общее решение однородного уравнения. Для неоднородных уравнений этот список содержит ещё и частные решения.

Значение type=numeric определяет, что решение будет находиться численно. Если используется это значение, то после него может быть указан метод решения – одно из значений:

method=rkf45 – метод Рунге-Кутта 4,5-го порядка, используется по умолчанию;

method=dverk78 – метод Рунге-Кутта 7,8-го порядка;

method=classical – некоторые классические методы типа метода Эйлера второго порядка. Используется фиксированный шаг, что не подходит для высоких точностей вычислений;

method=gear, method=mgear – одношаговый и многошаговый методы Геарса;

method=lsode – метод Левермора решения жестких задач для ОДУ.

Для каждого из методов решения имеется набор дополнительных режимов. Более подробную информацию по каждому из методов можно посмотреть командами ?dsolve[numeric], ?dsolve[rkf45], ?dsolve[dverk78], ?dsolve[classical], ?dsolve[gear], ?dsolve[mgear], ?dsolve[lsode].

Кроме этой команды в системе имеется дополнительная библиотека Detools, предназначенная для решения и визуализации обыкновенных дифференциальных уравнений и уравнений в частных производных.

Примеры:

> eqn:= diff( y(x),x$2 ) -y(x)=0;

> dsolve( eqn,y(x) );

y(x) = _C1 exp(x) + _C2 exp(-x)

Сделаем проверку:

> simplify(subs( %,eqn ));

0 = 0

> dsolve({diff( v(t),t ) +2*t=0, v(1)=5 }, v(t) );

v(t) = -t + 6

> dsolve(diff( y(x),x ) - a*y(x) = 0, y(x), explicit=true);

y(x) = exp(a x) _C1

> dsolve({diff( y(t),t$2 ) +5* diff( y(t),t ) +6*y(t)=0,y(0)=0, D( y )( 0 ) =1 }, y(t) );

y(t) = exp(-2 t) - exp(-3 t)

>eqn1:= diff( y(t),t ) =z(t), diff( z(t),t ) =y(t);

> eqn2:=y(0)=0, z(0)=1;

eqn2:= y(0) = 0, z(0) = 1

> dsolve( {eqn1,eqn2},{y(t),z(t)} );

{z(t) = 1/2 exp(-t) + 1/2 exp(t), y(t) = 1/2 exp(t) - 1/2 exp(-t)}





Дата публикования: 2014-11-29; Прочитано: 295 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...