Jacopo Francesco Riccati (1676--1754) was an Venetian mathematician and jurist from Venice. He is best known for having studied the differential equation which bears his name:
When h(x) = 0, we get a Bernoulli equation. The Riccati equation has much in common with linear equations; for example, it has no singular solution. Except special cases, the Riccati equation cannot be solved analytically using elementary functions or quadratures, and the most common way to obtain its solution is to represent it in series. Moreover, the Riccati equation can be reduced to the second order linear differential equation by substitution
It is sometimes possible to find a solution of a Riccati equation by guessing. Without knowing a solution to the Riccati equation, there is no chance of finding its general solution explicitly. If one solution ϕ is known, then substitution w = y - ϕ reduces the Riccati equation to a Bernoulli equation. Another substitution y = ϕ + 1/v also reduces the Riccati equation to a Bernoulli type.
The special Riccati equation can be represented as \( y' = -u' /(au) , \) where
y[x_] = Simplify[v'[x]/v[x]]
Assuming[alpha > 0 && x > 0, Series[%, {x, 0, 0}]]
Normal[%]
Simplify[%]
We can find the limit of the solution to the special Riccati equation when x → 0:
simplify(sqrt(2)*(GAMMA(-1/4)-4*GAMMA(3/4))/(8*GAMMA(1/4)))
evalf(%)
simplify(pi*(GAMMA(1/4)+4*GAMMA(5/4))/((4*GAMMA(1/4)*GAMMA(1/4))*GAMMA(5/4)))
evalf(%)
dsolve({diff(y(x), x) = x^2+y(x)^2, y(0) = 0})
fsolve(-BesselJ(1/4, (1/2)*x^2)+BesselY(1/4, (1/2)*x^2) = 0, x)
dsolve({diff(y(x), x) = x^2+y(x)^2, y(0) = 0}, y(x), 'series') \[ y(x) = \frac{1}{3}\, x^3 + \frac{1}{63}\, x^7 + \frac{2}{2079}\, x^{11} + \frac{13}{218295}\,x^{15} + O\left( x^{16} \right) \] First, we define two solution-functions in Mathematica:
g[x_] = x*(BesselJ[-3/4, x^2 /2] - BesselY[-3/4, x^2 /2])/(BesselY[1/4, x^2 /2] - BesselJ[1/4, x^2 /2]);
N[Series[g[x], {x, 0, 16}]]
FullSimplify[D[g[x], x] - x^2 - (g[x])^2]
Limit[g[x], x -> 0]
fsolve(-BesselJ(-1/4, (1/2)*x^2) = 0, x)
g[x_] = x*(BesselJ[-3/4, x^2 /2] - BesselY[-3/4, x^2 /2])/(BesselY[1/4, x^2 /2] - BesselJ[1/4, x^2 /2]);
N[f[0.75]-g[0.75]]
The solution of the Riccati equation \( y' = y^2 + x^2 \) subject to the initial condition y(0) = 1 is
fsolve(-BesselJ(1/4, (1/2)*x^2)+BesselY(1/4, (1/2)*x^2) = 0, x)
fsolve(-BesselJ(1/4, (1/2)*x^2)+BesselY(1/4, (1/2)*x^2) = 0, x)
  |
We plot the separatrix (in red) for the Riccati equation
\( y' = x^2 - y^2 \) that separates solutions approaching +∞ from solutions that go to -∞.
sp = StreamPlot[{1, x^2 - y^2}, {x, -2, 2}, {y, -2, 1},
StreamScale -> Medium, LabelStyle -> {FontSize -> 18, Black}];
curve = NDSolve[{y'[x] == x^2 - (y[x])^2, y[0] == -0.7134}, y, {x, -2, 2}]; cp = Plot[Evaluate[y[x] /. curve], {x, -2, 2}, PlotStyle -> {Thickness[0.015], Red}]; Show[sp, cp] |
|
Separatrix for the Riccati equation (2.1). | Mathematica code |
If we consider a similar Riccati equation
  |
We plot two nullclines (in black) for the Riccati equation
\( y' = y^2 - x^2 \) and some typical solutions.
dfield = VectorPlot[{1, y^2 - x^2}, {x, -2, 2}, {y, -2, 2},
Axes -> True, VectorScale -> {Small, Automatic, None},
AxesLabel -> {"x", "dydx=y^2 - x^2"}]
l1 = Plot[x, {x, -2, 2}, PlotStyle -> {Thickness[0.01], Black}]; l2 = Plot[-x, {x, -2, 2}, PlotStyle -> {Thickness[0.01], Black}]; sol1 = NDSolve[{y'[x] == (y[x])^2 - x^2, y[-1.5] == -1.5}, y, {x, -2, 2}] s1 = Plot[y[x] /. sol1, {x, -2, 2}, PlotStyle -> {Thickness[0.008], Blue}, PlotRange -> {-2, 2}] sol2 = NDSolve[{y'[x] == (y[x])^2 - x^2, y[-1.0] == 1.6}, y, {x, -2, 2}] s2 = Plot[y[x] /. sol2, {x, -2, 2}, PlotStyle -> {Thickness[0.008], Blue}, PlotRange -> {-2, 2}] sol3 = NDSolve[{y'[x] == (y[x])^2 - x^2, y[0] == 0.6}, y, {x, -2, 2}] s3 = Plot[y[x] /. sol3, {x, -2, 2}, PlotStyle -> {Thickness[0.008], Blue}, PlotRange -> {-2, 2}] sol4 = NDSolve[{y'[x] == (y[x])^2 - x^2, y[-1.0] == -1.0}, y, {x, -2, 2}] s4 = Plot[y[x] /. sol4, {x, -2, 2}, PlotStyle -> {Thickness[0.008], Blue}, PlotRange -> {-2, 2}] Show[s1, s2, l1, l2, dfield, s3, s4, AspectRatio -> 1] |
|
Two nullclines for the Riccati equation (2.5). | Mathematica code |
■
dsolve({diff(y(x), x) = y(x)*y(x) - x*x, y(0) = 1}, y(x))
We plot the separatrix and the direction field
field = StreamPlot[{1, 2*y/x + y^2 - x^4}, {x, -2, 2}, {y, -2, 2},
StreamColorFunction -> "Rainbow", StreamPoints -> 42,
StreamScale -> {Full, All, 0.04}];
sol = NDSolve[{y'[x] == 2*y[x]/x + (y[x])^2 - x^4 , y[0.1] == 0.01}, y[x], {x, 0, 2}]; curve = Plot[Evaluate[y[x] /. sol], {x, 0, 2}, PlotRange -> {{0, 2}, {-2, 2}}, PlotStyle -> {Red, Thickness[0.01]}]; Show[field, curve] |
|
Direction field and separatrix (in red). | Mathematica code. |
The given Riccati equation can be solved by substitution \( y =x^2 +1/v(x) , \) where y1 = x² is a particular solution of the given Riccati equation.
y1[x_] = x^2
R[x, y1]
Simplify[Expand[v[x]^2 R[x, Function[t, t + t/v[t]]]]]
DSolve[% == 0, v[x], x] (* solve linear equation for v *)
y2[x_] = Simplify[(y1[x] + 1/v[x]) /. %[[1]]]
Out[12]= x^2
Out[13]= 0
Out[14]= -(1 + 2 x^2) v[x] + (-1 - x^2 + x^4) v[x]^2 - x (x + Derivative[1][v][x])
Out[15]= {{v[x] -> -(x (-(E^((2 x^3)/3 - 1/6 x^2 (3 + 2 x))/(2 x)) + (
E^((2 x^3)/3 - 1/6 x^2 (3 + 2 x)) (1 + x))/(2 x^2) - (
E^((2 x^3)/3 - 1/6 x^2 (3 + 2 x)) (1 + x) ((5 x^2)/3 - 1/3 x (3 + 2 x)))/(
2 x) + (-((E^(-(1/6) x^2 (3 + 2 x)) (-1 + x))/x^2) +
E^(-(1/6) x^2 (3 + 2 x))/x + ( E^(-(1/6) x^2 (3 + 2 x)) (-1 + x) (-(x^2/3) -
1/3 x (3 + 2 x)))/x) C[1]))/((-1 - x^2 + x^4) (-((E^((2 x^3)/3 - 1/6 x^2 (3 + 2 x)) (1 + x))/(
2 x)) + (E^(-(1/6) x^2 (3 + 2 x)) (-1 + x) C[1])/x))}}
Out[16]= (E^((2 x^3)/3) (-1 - x + x^2) + 2 (-1 + x + x^2) C[1])/(E^((
2 x^3)/3) + 2 C[1])
- Haaheim, D.R. and Stein, F.M., Methods of Solution of the Riccati Differential Equation, Mathematics Magazine, 1969, Vol. 42, No. 5, pp. 233--240; https://doi.org/10.1080/0025570X.1969.11975969
- Robin, W., A new Riccati equation arising in the theory of classical orthogonal polynomials, International Journal of Mathematical Education in Science and Technology, 2003, Volume 34, 2003 - Issue 1, pp. 31--42. https://doi.org/10.1080/0020739021000018746