Кафедра:Информационные Технологии
ЛабораторнаяРабота
Натему: РЕШЕНИЕ ОБЫКНОВЕННЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ
Москва,2008 год
РЕШЕНИЕОБЫКНОВЕННЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ
Целиработы:
·знать команды, используемые при решении обыкновенных дифференциальных уравненийв системе вычислений Maple;
·уметь применять указанные команды для решения математических задач.
ТЕОРЕТИЧЕСКИЕСВЕДЕНИЯ
Решениеобыкновенных дифференциальных уравнений.
Спомощью команды dsolve( )можно получить аналитическое решение дифференциального уравнения, а можно исформировать процедуру построения численного решения задачи Коши, если система Mapleне сможет найти общее решение в аналитическом виде. Наиболее общий синтаксисвызова команды решения дифференциального уравнения следующий:
dsolve (уравнения,неизвестные, [опции]);
Параметром уравнения задается однодифференциальное уравнение или система дифференциальных уравнений. В последнемслучае все уравнения системы должны быть представлены в виде множества (ихсписок через запятую следует заключить в фигурные скобки). Параметр неизвестные определяет неизвестную функцию дифференциальногоуравнения или неизвестные функции системы дифференциальных уравнений, которые,как и сами уравнения системы, должны быть представлены в виде множества.Необязательный параметр опции,определяемый в виде ключевое_значение = значение,позволяет задать методы и форму представления решения.
Чтобызадать производную искомой функции в дифференциальном уравнении используюткоманду diff ( )или оператор D, причем самунеизвестную функцию следует определять с явным указанием независимой переменной,например у(х). Оператор Dопределяет операцию дифференцирования и имеет следующий синтаксис:
(D@@n)(функция) (переменная);
Вэтой записи n представляет целоечисло, определяющее порядок производной, параметр функция–используемый идентификатор функции, а параметр переменная– независимую переменную функции. Например, производная второго порядка функцииf (х) сиспользованием этого оператора задается так:
(D@@ 2) (f) (x);
Нижепредставлены несколько примеров задания дифференциальных уравнений и системдифференциальных уравнений:
> ex1:=diff(y(x),x$3)+k^2*y(x)=0;
/>
> ex2:=(D@@3)(y)(x)+k^2*y(x)=cos(k1*x);
/>
> sys1:={D(y1)(x)=a[1,1]*y1(x)+a[1,2]*y2(x),
D(y2)(x)=a[2,1]*y1(x)+a[2,2]*y2(x)};
/>
Заметим,что в приведенных примерах и уравнения, и система уравнений сохраняются впеременных Maple. Как отмечалось ранее,это достаточно распространенный прием, позволяющий использовать в дальнейшемзаданные уравнения простой ссылкой на обычную переменную.
Решимодно из известных уравнений:
> ex3:=diff(y(x),x$2)+k^2*y(x)=0;
/>
> dsolve(ex3,y(x));
/>
Найденообщее решение дифференциального уравнения, в котором переменные С1 и С2 – этосгенерированные Maple специальныепеременные, представляющие произвольные константы общего решениядифференциального уравнения второго порядка. Этот пример показывает, что приотсутствии каких-либо опций система Mapleпытается найти точное общее решение в явном виде. Если в явном виде решения несуществует, то система попытается найти его в неявном виде, как видно изследующего примера:
> ex4:=diff(y(x),x)=-sqrt(x^2-y(x))+2*x;
/>
> dsolve(ex4,y(x));
/>
> isolate(%,y(x));
/>
Команда isolate ( ) в этом примеревыражает заданное вторым параметром выражение (у(х))из уравнения, определяемого первым параметром (в нашем случае из неявного видаобщего решения дифференциального уравнения).
По умолчанию команда dsolve ( ) сначала пытается найти общее решение в явном виде, иесли таковое не удается найти, то решение выдается в неявном виде (конечно, приусловии его существования). Можно «озадачить» Maple поискомобщего решения в явном виде, используя опцию explicit = true(по умолчанию используется explicit = false):
> dsolve(ex4,y(x),explicit=true);
/>
Каквидим, в этом случае мы действительно получили сразу же решение в явном виде,но оно представлено через функцию Rootof( ),так что наш первоначальный подход к решению дифференциального уравненияоказался более продуктивным.
Недля любого дифференциального уравнения удается найти общее решение в явном илинеявном виде. В этом случае можно построить приближенное решение в форме рядаТейлора. Для этого нужно задать опцию
type=seriesв команде dsolve ( )(по умолчанию используется type=exact),а также установкой значения системной переменной Orderопределить, до какого порядка малости относительно независимой переменнойфункции ищется разложение решения в ряд Тейлора в окрестности нулевой точки:
> Order:=4;
/>
> eqq:=(D@@2)(y)(x)+(a*x^2)*D(y)(x)+y(x)=0;
/>
> dsolve(eqq,y(x),type=series);
/>
Заметим, что в решениидифференциального уравнения второго порядка, представленном рядом Тейлора, вкачестве постоянных используются значения искомой функции и ее первойпроизводной в точке х=0: у(0), D(y)(0).
Длярешения задачи Коши или краевой задачи необходимо задать первый параметркоманды dsoive()в виде множества, элементами которого являются само уравнение и все начальныеили краевые условия. Решим задачу Коши и краевую задачу для следующегодифференциального уравнения второго порядка:
> eqn1:=diff(y(x),x$2)+k^2*y(x)=0;
/>
ЗадачаКоши для этого дифференциального уравнения второго порядка требует задания внулевой точке значения неизвестной функции и ее первой производной. Ее решениепредставлено ниже:
> dsolve({eqn1,y(0)=0,D(y)(0)=1},y(x));
/>
Краеваязадача для этого дифференциального уравнения второго порядка требует задания вдвух точках, например, х = 0 и х= 1значения неизвестной функции. Ее решение также получено с помощью команды dsolve( ):
> dsolve({eqn1,y(0)=0,y(1)=1},y(x));
/>
Начальныеили краевые условия задаются в виде уравнений, в левой части которых определензадаваемый параметр (значение неизвестной функции или ее производнойнеобходимого порядка) в соответствующей точке, а в правой части значение этогопараметра. При задании производных в начальных или краевых условиях следуетиспользовать оператор D — команда diff()здесь не употребляется.
Еслиточное решение задачи Коши или краевой задачи системой Mapleне найдено, а приближенное решение в виде ряда Тейлора нас не устраивает, то можнопостроить численное решение, опять-таки с использованием все той же команды dsoive( ).Для этого задают опцию type= numeric, а с помощью опции method= методопределяют используемый для построения численного решения метод. Параметр методпринимает одно из значений, представленных в табл. 1.
Таблица 1.Значения опции method при численном решении дифференциальных уравнений. Значение Описание Rkf45 Метод Рунге-Кутта-Фальберга порядка 4-5 Dverk78 Метод Рунге-Кутта порядка 7-8
По умолчанию (если не задана опция method) применяется метод Рунге-Кутта-Фальбергапорядка 4-5. При использовании численного решения следует помнить, что всепараметры дифференциального уравнения (символьные константы) должны бытьопределены. Например, для задачи Коши уравнения eqn1предыдущего примера следует задать численное значение для параметра k.
Численноерешение строится в форме процедуры Maple, поэтому следует некоторой переменнойприсвоить результат построения командой dsolve ( )численного решения в виде процедуры. В дальнейшем имя этой переменной можноиспользовать как имя процедуры для вычисления значения решения задачи Коши внекоторой точке, соответствующей значению независимой переменной функциирешения. Это значение передается в процедуру как ее параметр – после именипроцедуры в круглых скобках. Следующий пример демонстрирует построениечисленного решения задачи Коши и его использование.
> eqn1:=diff(y(x),x$2)+k^2*y(x)=0;
/>
Переменнойf присваиваем результат численногорешения задачи Коши для дифференциального уравнения второго порядка (в нулевойточке задается значение неизвестной функции и ее первой производной):
> F:=dsolve({eqn1,y(0)=0,D(y)(0)=1},y(x),type=numeric);
/>
Еслине присвоить параметру kконкретного числового значения, то попытка получить значение решения в точке,например х = 1, приведет к ошибке:
> F(1);
Error, (indsolve/numeric/rkf45) cannot evaluate boolean:2.+abs(.2511886433e-1-.2016799760e-5*k^2-.3377712687e-4*k^2*(.2318664400e-1-.3700729218e-5*k^2)+.6309573448e-5*k^2*(.2511886433e-1-.6603721651e-5*k^2))
Следуетобязательно определить все символьные параметры дифференциального уравнениячисловыми значениями перед использованием численного решения:
> k:=1:
> F(0);F(1);F(2);
/>
/>
/>
Обратитевнимание, в каком виде построенная процедура численного решения выдаетрезультаты – в виде списка значений независимой переменной, самой функции и еепроизводных (до порядка на единицу меньше порядка самого уравнения).
Задачи для самостоятельного решения.
1. Решить уравнения:
1.1./>; 1.13./>;
1.2./>; 1.14./>;
1.3./>; 1.15. />;
1.4./>; 1.16./>;
1.5./>; 1.17./>;
1.6./>; 1.18./>;
1.7./>; 1.19./>;
1.8./>; 1.20./>;
1.9./>; 1.21./>;
1.10./>; 1.22./>
1.11./>; 1.23./>;
1.12./>; 1.24./>
Вариантызаданий.
/>. 1.1; 1.2; />. 1.12; 1.21;
/>. 1.3; 1.4; />. 1.13; 1.22
/>. 1.5; 1.6; />. 1.14; 1.23;
/>. 1.7; 1.8; />. 1.15; 1.24;
/>. 1.9; 1.18; />. 1.16; 1.14;
/>. 1.10; 1.19; />. 1.17; 1.15;
/>. 1.11; 1.20;
Контрольныевопросы.
1.Команда dsolve(), ее предназначение и синтаксис.
2.Оператор D, его предназначение исинтаксис.
3.Команда isolate(), ее предназначение и синтаксис.
4.Какая опция в команде dsolve() используется для построения приближенного решения дифференциального уравненияв форме ряда Тейлора?
5. Как решить задачу Коши с помощью команды dsolve()?
6. Как решить краевую задачу с помощью команды dsolve()?
7.Можно ли с помощью команды diff( ) задавать производные в начальных или краевых условиях?
8.Как с помощью команды dsolve() построить численное решение дифференциального уравнения?
Литература
1. Говорухин В.Н.,Цибулин В.Г. Введение в Maple.Математический пакет для всех. – М.: Мир, 1997. – 208 с.
2. Дьяконов В.П.Математическая система MapleV. – М.: Издательство “Солон”,1998.
3. Двайт Г.Б. Таблицыинтегралов и другие математические формулы. – М.: Наука. Главная редакцияфизико-математической литературы, 1983. – 176 с.
4. Матросов А.В. Maple6. Решение задач высшей математики и механики. – СПб.: БХВ — Петербург, 2001.–528 с.
5. Манзон Б.М. MapleV PowerEdition – М.:Информационно-издательский дом “Филинъ”,1998г.