There are several numerical methods to solve fractional DE and PDE, including predictor-corrector method described here, and wavelets method discussed in our paper and here. First we solve this problem for $1\le F\le 2$ with Haar wavelets. Note, that in this case we have the second order problem, and it is why we need two boundary conditions. In a case $F=2$ we have CaputoD[y[x], {x, F}]=D[y[x], {x, 2}]
, therefore problem turns to second order ODE with known solution. This solution we gonna use as a test. With Haar wavelets we can compute CaputoD[y[x], {x, q}]
as follows
h[x_, k_, m_] :=
WaveletPsi[HaarWavelet[], m x - k, WorkingPrecision -> Infinity];
p[x_, k_, m_] :=
Piecewise[{{(1 + k - m*x)/m, k >= 0 && 1/m + (2*k)/m - 2*x < 0 &&
1/m + k/m - x >= 0 && m > 0}, {(-k + m*x)/m,
k >= 0 && 1/m + (2*k)/m - 2*x >= 0 &&
k/m - x < 0 && 1/m + k/m - x >= 0 && m > 0}}, 0];
h1[x_] := WaveletPhi[HaarWavelet[], x, WorkingPrecision -> Infinity];
p1[x_] := Piecewise[{{1, x > 1}}, x];
pc[t_, k_, m_, q_] :=
Piecewise[{{-(t^(1 - q)/(-1 + q)), k == 0 && 1/m - 2*t >= 0 &&
m > 0 && t > 0 && 1/m - t >= 0},
{-((m^(-1 + q)*(1/(-k + m*t))^(-1 + q))/(-1 + q)),
k > 0 && 1/m + (2*k)/m - 2*t > 0 && k/m - t < 0 && m > 0 &&
1/m + k/m - t > 0},
{(-t^q + 2*m*t^(1 + q) - m*t*(-(1/(2*m)) + t)^q)/
(t^q*(-(1/(2*m)) + t)^q*(m*(-1 + q))),
k == 0 && m > 0 && 1/m - 2*t < 0 && 1/m - t >= 0},
{(1/(-1 + q))*((2^(-1 + q)*m^(-1 + 2*q)*(-(-(k/m) + t)^q -
2*k*(-(k/m) + t)^q + 2*m*t*(-(k/m) + t)^q +
2*k*(-((1/2 + k)/m) + t)^q -
2*m*t*(-((1/2 + k)/m) + t)^
q))/((1 + 2*k - 2*m*t)*(k - m*t))^q),
k > 0 && 1/m + (2*k)/m - 2*t == 0 && m > 0 &&
1/m + k/m - t > 0},
{-((1/(-1 + q))*((2^(-1 + q)*m^(-1 + 2*q)*
(-2*(-((1/2 + k)/m) + t)^
q*((1 + 2*k - 2*m*t)*(k - m*t))^
q - 2*k*(-((1/2 + k)/m) + t)^q*
((1 + 2*k - 2*m*t)*(k - m*t))^q +
2*m*t*(-((1/2 + k)/m) + t)^q*((1 + 2*k - 2*m*t)*
(k - m*t))^q + (-((1 + k)/m) + t)^q*
((1 + 2*k - 2*m*t)*(k - m*t))^q +
2*k*(-((1 + k)/m) + t)^q*((1 + 2*k - 2*m*t)*(k - m*t))^
q - 2*m*t*(-((1 + k)/m) + t)^q*
((1 + 2*k - 2*m*t)*(k - m*t))^
q + (-(k/m) + t)^q*
((1 + 2*k - 2*m*t)*(1 + k - m*t))^q +
2*k*(-(k/m) + t)^q*((1 + 2*k - 2*m*t)*(1 + k - m*t))^
q -
2*m*t*(-(k/m) + t)^q*((1 + 2*k - 2*m*t)*(1 + k - m*t))^
q - 2*k*(-((1/2 + k)/m) + t)^q*
((1 + 2*k - 2*m*t)*(1 + k - m*t))^q +
2*m*t*(-((1/2 + k)/m) + t)^q*((1 + 2*k - 2*m*t)*
(1 + k - m*t))^
q))/(((1 + 2*k - 2*m*t)*(k - m*t))^q*
((1 + 2*k - 2*m*t)*(1 + k - m*t))^q))),
k > 0 && m > 0 && 1/m + (2*k)/m - 2*t <= 0 &&
1/m + k/m - t <= 0},
{-((1/(2*m*(-1 + q)))*((2^q*m^(2*q)*t^q*(-(1/m) + t)^q*
(-(1/(2*m)) + t)^q -
2^(1 + q)*m^(1 + 2*q)*t^(1 + q)*
(-(1/m) + t)^q*(-(1/(2*m)) + t)^q -
2^(1 + q)*m^(2*q)*
t^q*(-(1/(2*m)) + t)^(2*q) +
2^(1 + q)*m^(1 + 2*q)*
t^(1 + q)*(-(1/(2*m)) + t)^(2*q) +
t^q*((-1 + m*t)*(-1 + 2*m*t))^q - 2*m*t^(1 + q)*
((-1 + m*t)*(-1 + 2*m*t))^q +
2*m*t*(-(1/(2*m)) + t)^q*
((-1 + m*t)*(-1 + 2*m*t))^q)/(t^
q*(-(1/(2*m)) + t)^q*
((-1 + m*t)*(-1 + 2*m*t))^q))),
k == 0 && 1/m - 2*t < 0 && 1/m - t < 0 && m > 0},
{(1/(-1 + q))*((2^(-1 + q)*m^(-1 + q)*((-m^q)*(-(k/m) + t)^q -
2*k*m^q*(-(k/m) + t)^q +
2*m^(1 + q)*t*(-(k/m) + t)^q +
2*k*m^q*(-((1/2 + k)/m) + t)^q - 2*m^(1 + q)*t*
(-((1/2 + k)/m) + t)^
q - ((1 + 2*k - 2*m*t)*(k - m*t))^q*
(1/(-1 - 2*k + 2*m*t))^q -
2*k*((1 + 2*k - 2*m*t)*(k - m*t))^q*
(1/(-1 - 2*k + 2*m*t))^q +
2*m*t*((1 + 2*k - 2*m*t)*(k - m*t))^q*
(1/(-1 - 2*k + 2*m*t))^q))/((1 + 2*k -
2*m*t)*(k - m*t))^
q), 1/m + (2*k)/m - 2*t < 0 && k > 0 && m > 0 &&
1/m + k/m - t > 0}}, 0]
pc1[t_, q_] := Piecewise[{{-(t^(1 - q)/(-1 + q)), t <= 1}},
-(((-1 + t)^q*t + t^q - t^(1 + q))/((-1 + t)^q*t^q*(-1 + q)))];
Here p, p1
are integrals of h,h1
, and pc, pc1
are Caputo derivatives of h, h1
. With these functions we can compute numerical solution for $0\le q\le 1$ by reducing order FDE as
eqs={CaputoD[z[x],{x,q}] - 9/4 Sqrt[y[x]] - y[x] == 0, z[x]==y'[x],
y[0] == 1, z[0] == 2}
Finally we define numerical functions y[x],z[x]
and first derivatives y1[x], z1[x]
, and compute eqs
in collocation points xcol
J = 4; M = 2^J; dx = 1/(2*M); xl = Table[l dx, {l, 0, 2 M}]; xcol =
Table[(xl[[l - 1]] + xl[[l]])/2, {l, 2, 2 M + 1}];
z1[x_, q_] :=
Sum[v[i, j] pc[x, i, 2^j, q], {j, 0, J, 1}, {i, 0, 2^j - 1, 1}] +
v1 pc1[x, q];
z[x_] :=
Sum[v[i, j] p[x, i, 2^j], {j, 0, J, 1}, {i, 0, 2^j - 1, 1}] +
v1 p1[x] + v0;
y1[x_] :=
Sum[u[i, j] h[x, i, 2^j], {j, 0, J, 1}, {i, 0, 2^j - 1, 1}] +
u1 h1[x];
y[x_] :=
Sum[u[i, j] p[x, i, 2^j], {j, 0, J, 1}, {i, 0, 2^j - 1, 1}] +
u1 p1[x] + u0;
varM = Join[{v0, v1, u0, u1},
Flatten[Table[v[i, j], {j, 0, J, 1}, {i, 0, 2^j - 1, 1}]],
Flatten[Table[u[i, j], {j, 0, J, 1}, {i, 0, 2^j - 1, 1}]]];
eq[q_] :=
Flatten[Table[{1/Gamma[1 - q] z1[x, q] - 9/4 Sqrt[Abs[y[x]]] - y[x] ==
0, y1[x] - z[x] == 0}, {x, xcol}]]; bc = {y[0] == 1, z[0] == 2};
The system of algebraic equations can be solved with FindRoot
for several q
qlist = {99/100, 1/2, 1/3};
Do[
eqM[i] = Join[eq[i], bc];
solv[i] =
FindRoot[eqM[i], Table[{varM[[j]], 1/10}, {j, Length[varM]}],
MaxIterations -> 1000, WorkingPrecision -> 30];, {i,
qlist}]
Visualization together with test data
Do[lst[i] =
Table[{x , Evaluate[y[x] /. solv[i]]}, {x, 0, 1, .01}];, {i, qlist}]
test = {{0., 1.}, {0.1, 1.21698}, {0.2, 1.47099}, {0.3,
1.76705}, {0.4, 2.11074}, {0.5, 2.50829}, {0.6, 2.96662}, {0.7,
3.49344}, {0.8, 4.09733}, {0.9, 4.78782}, {1., 5.57553}};
Show[ListLinePlot[Table[lst[i], {i, qlist}], Frame -> True,
FrameLabel -> {"x", "y"},
PlotRange -> All,
PlotLegends ->
Table[Row[{"F = ", qlist[[i]] + 1}], {i, Length[qlist]}]],
ListPlot[test, PlotStyle -> Red]]

Predictor-corrector code is based on the pseudocode published in the end of paper
g[t_, y_] := 9/4 Sqrt[y] + y;
\[Alpha] = 199./100;
h = 1./100;
y[0] = y0[0] = 1;
y0[1] = 2; n = 100;
For[k = 1, k <= n, k++, b[k] = k^\[Alpha] - (k - 1)^\[Alpha];
a[k] = -(2*k^(\[Alpha] + 1)) + (k - 1)^(\[Alpha] + 1) + (k +
1)^(\[Alpha] + 1);];
For[j = 1, j <= n, j++,
p[j] = (h^\[Alpha]*Sum[b[j - A]*g[A*h, y[A]], {A, 0, j - 1}])/
Gamma[\[Alpha] + 1] + y0[0] + j h y0[1];
y[j] = (h^\[Alpha]*(Sum[a[j - f]*g[f*h, y[f]], {f, 1, j - 1}] +
g[h*j, p[
j]] + ((j - 1)^(\[Alpha] + 1) - (-\[Alpha] + j - 1)*
j^\[Alpha])*g[0, y[0]]))/Gamma[\[Alpha] + 2] + y0[0] +
j h y0[1];
;];
Visualization together with test
data
lst = Table[{j h, y[j]}, {j, n}];
test = {{0., 1.}, {0.1, 1.21698}, {0.2, 1.47099}, {0.3,
1.76705}, {0.4, 2.11074}, {0.5, 2.50829}, {0.6, 2.96662}, {0.7,
3.49344}, {0.8, 4.09733}, {0.9, 4.78782}, {1., 5.57553}}; Show[
ListLinePlot[lst], ListPlot[test, PlotStyle -> Red]]

Finally note, that solver proposed by xzczd is not so good compare to wavelets and predictor-corrector method and needs to be improved. Code is given by
F = 3/2; yfunc =
x |-> a + b x +
c x^2; ivp = {CaputoD[y[x], {x, F}] - 9/4 Sqrt[y[x]] - y[x] == 0 /.
x -> x0 + dx, y[x0] == y0, y'[x0] == dy0};
solrule =
Solve[ivp /. y -> yfunc, {a, b,
c}]; (Subtract @@@ ivp /. y -> yfunc /. # /. {x0 -> 0, y0 -> 1,
dy0 -> 2, dx -> 0.1, a -> 1, b -> 2} // N) & /@ solrule; cf =
Compile[{x0, y0, dy0, dx},
Evaluate[{x0 + dx, yfunc[x0 + dx], yfunc'[x0 + dx], dx} /.
solrule[[-1]]]];
solver[x0_, y0_, dy0_, dx_, tend_] :=
MapAt[List,
NestList[cf @@ # &, {x0, y0, dy0, dx},
tend/dx // Round]\[Transpose] // Most, {1, All}] // Transpose //
Interpolation
tend = 1;
nsol = solver[0, 1, 2, 0.01, tend]
nsol // ListPlot
In the picture below shown Figure 1 with wavelets method results, predictor-corrector method for F=3/2
- dashed red line and nsol
- doted line. We see that two methods are in a good agreement while nsol
is out of range.

Updated code by xzczd is in a good agreement with Haar wavelets method and predictor-corrector method as well. Code
n = 16;
range = Range[0, n - 1];
coef = c /@ range;
poly[x_] = coef . x^range;
CGLGrid[xl_, xr_, n_Integer /; n > 1] :=
1/2 (xl + xr + (xl - xr) Cos[(\[Pi] Range[0, n - 1])/(n - 1)])
grid = CGLGrid[0, 1, n];
F = 3/2;
{eq, ic} = {CaputoD[y[x], {x, F}] - 9/4 Sqrt[y[x]] - y[x] ==
0, {y[0] == 1, y'[0] == 2}};
approx = eq /. y -> poly; // AbsoluteTiming
cguess = 1;
crule = FindRoot[
Table[approx, {x, grid[[3 ;;]]}]~
Join~(ic /. y -> poly), {#, cguess} & /@ coef]; // AbsoluteTiming
pseudo =
Plot[poly[x] /. crule // Evaluate, {x, 0, 1}, PlotRange -> All,
GridLines -> Automatic, PlotStyle -> Dashed]
In the picture below the dashed line is the numerical solution computed with xzczd code compare to wavelets (left) and predictor-corrector method (right):

NDSolve
can't deal withCaputoD
yet ... $\endgroup$