Solving Riccati's ODEs
Description
Examples
The general form of Riccati's equation is given by the following:
Riccati_ode := diff(y(x),x)-f(x)*y(x)^2-g(x)*y(x)-h(x);
Riccati_ode≔ⅆⅆxy⁡x−f⁡x⁢y⁡x2−g⁡x⁢y⁡x−h⁡x
where f⁡x, g⁡x, and h⁡x are arbitrary functions.
The so-called "Special" form of Riccati's equation is given by:
Riccati_S := diff(y(x),x)+a*y(x)^2-b*x^c;
Riccati_S≔ⅆⅆxy⁡x+a⁢y⁡x2−b⁢xc
See Differentialgleichungen, by E. Kamke, pp. 21-23. There is as yet no general solution for the regular Riccati ODE.
For h⁡x=0, we have an ODE of Bernoulli type which can be solved in a direct manner by dsolve (see odeadvisor,Bernoulli). In the other cases, a good strategy might be to introduce an appropriate change of variables. A general transformation for canceling h⁡x is not yet known.
with⁡DEtools,odeadvisor
odeadvisor
with⁡PDEtools,dchange
dchange
odeadvisor⁡Riccati_ode
_Riccati
odeadvisor⁡Riccati_S
_Riccati,_special
The following transformation
ITR≔x=t,y⁡x=u⁡t⁢h⁡t
leads to another Riccati ODE, but with h(x) -> 1:
ode_draft≔dchange⁡ITR,Riccati_ode,known=f⁡x,g⁡x,h⁡x,t,u⁡t:
ode2≔diff⁡u⁡t,t=solve⁡ode_draft,diff⁡u⁡t,t:
new_ode≔collect⁡ode2,u⁡t,normal
new_ode≔ⅆⅆtu⁡t=1+h⁡t⁢f⁡t⁢u⁡t2+h⁡t⁢g⁡t−ⅆⅆth⁡t⁢u⁡th⁡t
ITR≔x=t,y⁡x=u⁡t⁢exp⁡int⁡g⁡t,t
ITR≔x=t,y⁡x=u⁡t⁢ⅇ∫g⁡tⅆt
leads to another Riccati ODE but without the "linear in u(t)" term:
ode2≔isolate⁡ode_draft,diff⁡u⁡t,t:
new_ode≔collect⁡ode2,u⁡t,simplify
new_ode≔ⅆⅆtu⁡t=ⅇ∫g⁡tⅆt⁢f⁡t⁢u⁡t2+h⁡t⁢ⅇ−∫g⁡tⅆt
Depending on the case, the system might be able to solve the problem using one of the transformations above; the above transformations can also be used as departure point for guessing another transformation suitable for the given problem. It is also possible to introduce a change of variables leading to a linear ODE of the second order (see below).
Concerning Riccati ODEs of Special type, the solving scheme can be summarized as follows. The first thing worth noting is that, for c=0 the system succeeds in solving the ODE:
dsolve⁡subs⁡c=0,Riccati_S
y⁡x=tanh⁡a⁢b⁢c__1+x⁢a⁢ba
Now, for c≠0, Riccati Special ODEs can be reduced, step by step, to the case c=0, provided that c can be written as cn=−4⁢n2⁢n−1 (integer n). Examples of possible values for c:
cn=seq⁡−4⁢i2⁢i−1,i=−3..3
cn=−127,−85,−43,0,−4,−83,−125
The idea is to change variables so as to obtain another ODE of type Riccati Special, but with c[n->0], until reaching c0=0. There are two variable transformations leading to the desired reduction, depending on the sign of n in cn above (see examples at the end).
1) Riccati Special ODE with c=−83 (c2=−83)
ode≔subs⁡c=−83,Riccati_S
ode≔ⅆⅆxy⁡x+a⁢y⁡x2−bx83
The general transformation for n > 0 (in cn), in order to reduce c is given by
itr≔x=r1c+3,y⁡x=1s⁡r⁢r2c+3+1a⁢r1c+3
In each step, you must introduce the corresponding value of c before using it.
ITR≔subs⁡c=−83,itr
ITR≔x=r3,y⁡x=1s⁡r⁢r6+1a⁢r3
The change of variables plus a few simplifications leads to the desired new_ode of type Riccati Special with the order of c reduced by one.
ode_draft≔dchange⁡ITR,ode,s⁡r,r:
ode2≔op⁡solve⁡ode_draft,diff⁡s⁡r,r:
new_ode≔expand⁡combine⁡ode2,symbolic
new_ode≔ⅆⅆrs⁡r=−3⁢b⁢s⁡r2+3⁢ar4
The exponent of r was reduced from c2=−83 to c1=−4. Keep doing that until the value c=0 is reached. Then, as shown above, a solution is already known.
The same idea applies when n < 0 (in c[n]). For this case, the change of variables is given by
itr≔x=r−1c+1,y=1s⁡r⁢r2+c+1⁢rb
The case in which f(x) + g(x) + h(x) = 0
ode≔subs⁡h⁡x=−f⁡x−g⁡x,Riccati_ode
ode≔ⅆⅆxy⁡x−f⁡x⁢y⁡x2−g⁡x⁢y⁡x+f⁡x+g⁡x
dsolve⁡ode,y⁡x
y⁡x=1−2⁢ⅇ∫2⁢f⁡x+g⁡xⅆxc__1+2⁢∫f⁡x⁢ⅇ∫2⁢f⁡x+g⁡xⅆxⅆx
Finally, it is also possible to convert Riccati ODEs in second order linear homogeneous ODEs, by using convert,ODEs), as follows:
convert⁡Riccati_ode,linearODE
ⅆ2ⅆx2_a⁡x=g⁡x⁢f⁡x+ⅆⅆxf⁡x⁢ⅆⅆx_a⁡xf⁡x−f⁡x⁢h⁡x⁢_a⁡x,y⁡x=−ⅆⅆx_a⁡xf⁡x⁢_a⁡x
In the above, the first operand is the second order linear ODE and the second operand is the transformation of variables used.
See Also
DEtools
dsolve
quadrature
linear
separable
Bernoulli
exact
homogeneous
homogeneousB
homogeneousC
homogeneousD
homogeneousG
Chini
Riccati
Abel
Abel2A
Abel2C
rational
Clairaut
dAlembert
sym_implicit
patterns
odeadvisor,types
Download Help Document