ЗАДАЧА 2. Найти решение дифференциального уравнения.

> restart:

> with(PDEtools,declare):

> declare(y(x),prime=x);

` y(x) will now be displayed as y `

`derivatives with respect to: x of functions of one...

> y(x)^2+x^2*diff(y(x),x)=x*y(x)*diff(y(x),x);ODE:=%:

y^2+x^2*`y'` = x*y*`y'`

> declare(u(x),prime=x);

`derivatives with respect to: x of functions of one...

` u(x) will now be displayed as u `

Разделим обе части на x^2 .

> expand(ODE/x^2);

1/x^2*y^2+`y'` = 1/x*y*`y'`

Сделаем замену переменных:

> y(x):=u(x)*x;`y'`:=diff(y(x),x);

y := u*x

`y'` := `u'`*x+u

Тогда перепишем исходное уравнение:

> expand(ODE/x^2);
isolate(%,u(x));

u^2+`u'`*x+u = u*`u'`*x+u^2

`u'`*x+u-u*`u'`*x = 0

Решая это, получим:

> dsolve(%,u(x),implicit);DS:=%:

ln(x)-u+ln(u)+_C1 = 0

И сделав обратную замену u = y/x ,получим:

> u(x):='y'(x)/x:DS;

ln(x)-y/x+ln(y/x)+_C1 = 0

Откуда получаем:

> y=x*ln(y)+x*_C1;

y = x*ln(y)+x*_C1

Или (при желании блеснуть знанием высшей математики):

> 'y'(x) = exp(-LambertW(-1/(exp(_C1)*x))-_C1),`что в общем-то и является решением предыдущего уравнения.`;

y = exp(-LambertW(-1/(exp(_C1)*x))-_C1), `что в общ...

Замечание*. Функция LambertW есть функция, удовлетворяющая следующему условию: LambertW(x)*e^LambertW(x) = x .