Приближенное решение дифференциальных уравнений с помощью степенных рядов.

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

Чтобы найти приближенное решение дифференциального уравнения в виде степенного ряда, в команде dsolveследует после переменных указать параметр type=series (или просто series). Для того, чтобы указать порядок разложения n, т.е. порядок степени, до которой производить разложение, следует перед командой dsolve вставить определение порядка с помощью команды Order:=n.

Если ищется общее решение дифференциального уравнения в виде разложения в степенной ряд, то коэффициенты при степенях х найденного разложения будут содержать неизвестные значения функции в нуле y(0)и ее производных D(y)(0), (D@@2)(y)(0)и т.д. Полученное в строке вывода выражение будет иметь вид, похожий на разложение искомого решения в ряд Маклорена, но с другими коэффициентами при степенях х. Для выделения частного решения следует задать начальные условия y(0)=у1, D(y)(0)=у2, (D@@2)(y)(0)=у3и т.д., причем количество этих начальных условий должно совпадать с порядком соответствующего дифференциального уравнения.

Разложение в степенной ряд имеет тип series, поэтому для дальнейшей работы с этим рядом его следует преобразовать в полином с помощью команды convert(%,polynom), а затем выделить правую часть полученного выражения командой rhs(%).

Задание 2.5.

1. Найти решение задачи Коши: Приближенное решение дифференциальных уравнений с помощью степенных рядов. - student2.ru , Приближенное решение дифференциальных уравнений с помощью степенных рядов. - student2.ru в виде степенного ряда с точностью до 5-го порядка.

>restart; Order:=5:

> dsolve({diff(y(x),x)=y(x)+x*exp(y(x)),

y(0)=0}, y(x), type=series);

Приближенное решение дифференциальных уравнений с помощью степенных рядов. - student2.ru

В полученном решении слагаемое Приближенное решение дифференциальных уравнений с помощью степенных рядов. - student2.ru означает, что точность разложения была до 5-го порядка.

2. Найти общее решение дифференциального уравнения y''(х)-y3(х)=еcosx, в виде разложения в степенной ряд до 4-го порядка. Найти разложение при начальных условиях: y(0)=1, y'(0)=0.

>restart; Order:=4: de:=diff(y(x),x$2)-

y(x)^3=exp(-x)*cos(x):

>f:=dsolve(de,y(x),series);

Приближенное решение дифференциальных уравнений с помощью степенных рядов. - student2.ru

Замечание: в полученном разложении запись D(y)(0) обозначает производную в нуле: y'(0). Для нахождения частого решения осталось задать начальные условия:

>y(0):=1: D(y)(0):=0:f;

Приближенное решение дифференциальных уравнений с помощью степенных рядов. - student2.ru

3. Найти приближенное решение в виде степенного ряда до 6-го порядка и точное решение задачи Коши: Приближенное решение дифференциальных уравнений с помощью степенных рядов. - student2.ru , Приближенное решение дифференциальных уравнений с помощью степенных рядов. - student2.ru , Приближенное решение дифференциальных уравнений с помощью степенных рядов. - student2.ru , Приближенное решение дифференциальных уравнений с помощью степенных рядов. - student2.ru . Построить на одном рисунке графики точного и приближенного решений.

> restart; Order:=6:

> de:=diff(y(x),x$3)-diff(y(x),x)=

3*(2-x^2)*sin(x);

de:= Приближенное решение дифференциальных уравнений с помощью степенных рядов. - student2.ru

> cond:=y(0)=1, D(y)(0)=1, (D@@2)(y)(0)=1;

cond:=y(0)=1, D(y)(0)=1, D(2)(y)(0)=1

> dsolve({de,cond},y(x));

y(x)= Приближенное решение дифференциальных уравнений с помощью степенных рядов. - student2.ru

> y1:=rhs(%):

> dsolve({de,cond},y(x), series);

y(x)= Приближенное решение дифференциальных уравнений с помощью степенных рядов. - student2.ru

Замечание: тип решения дифференциального уравнения в виде ряда есть series, поэтому для дальнейшего использования такого решения (вычислений или построения графика) его обязательно следует конвертировать в полином с помощью команды convert

> convert(%,polynom): y2:=rhs(%):

> p1:=plot(y1,x=-3..3,thickness=2,color=black):

> p2:=plot(y2,x=-3..3, linestyle=3,thickness=2,

color=blue):

> with(plots): display(p1,p2);

Приближенное решение дифференциальных уравнений с помощью степенных рядов. - student2.ru

На этом рисунке видно, что наилучшее приближение точного решения степенным рядом достигается примерно на интервале -1<x<1.

Наши рекомендации