0
$\begingroup$

I am trying to solve for the function y[x] obeying the ODE:

$ \frac{x}{1 + x}y^{\prime\prime}(x) + \frac{2 x + 1}{(1 + x)^2} y^{\prime}(x) = \frac{1}{3\sqrt{y(x)}} $

using NDSolve.

NDSolve[{(x/(1 + x)) D[y[x], {x, 2}] + ((2 x + 1)/(1 + x)^2) D[
      y[x], {x, 1}] == 1/(3 Sqrt[y[x]]), y[0] == 0}, y, {x, 0, 0.02}]

but I got this error

NDSolve::ndnco: The number of constraints (1) (initial conditions) is not equal to the total differential order of the system (2).

Does anyone know why I keep getting this error?

$\endgroup$
3
  • $\begingroup$ You have second order ODE, but you only gave one IC. For numerical solver, it needs more one. (ps. the title of your question suggest it is a plotting problem, but there is no plotting issue here) (ps. actually the error message you get says the reason for the error :) $\endgroup$
    – Nasser
    Commented Apr 6, 2015 at 18:22
  • $\begingroup$ Also at 'x=0' the factor is front of y''[x] is null so this is a nasty ODE $\endgroup$
    – chris
    Commented Apr 6, 2015 at 18:28
  • $\begingroup$ This works for instance NDSolve[{(x/(1 + x)) D[y[x], {x, 2}] + ((2 x + 1)/(1 + x)^2) D[ y[x], {x, 1}] == 1/(3 Sqrt[y[x]]), y[1] == 1, y'[1] == 0}, y, {x, 1, 2}] $\endgroup$
    – chris
    Commented Apr 6, 2015 at 18:28

1 Answer 1

1
$\begingroup$

You can solve your problem numerically after mending two things

1) replace the 0 in x = 0 by a small quantity eps ( = 10^-5, say), i.e. write y[eps] == eps

2) add the second initial condition needed for an ODE of the second order, take e.g. y'(eps) = 1

The ODE is then easily NDSolved:

eps = 10^-5;

yy[x_] = y[x] /. 
  NDSolve[{((1 + 2 x) Derivative[1][y][x])/(1 + x)^2 + (
       x (y^\[Prime]\[Prime])[x])/(1 + x) == 1/(3 Sqrt[y[x]]), y[eps] == eps, 
     Derivative[1][y][eps] == 1}, y[x], {x, eps, 20}][[1]]

(*
Out[293]= InterpolatingFunction[{{0.00001,20.}},<>][x]
*)

You can now plot the function. Here you can even start at x = 0. For comparison we have added the approximate solution y = (3x/4)^(2/3) close to x = 0 obtained by inserting y = A x^p into the ODE and calculating A and p for x->0.

Plot[yy[x], {x, 0, 2}, PlotLabel -> "Solution of ODE", 
 AxesLabel -> {"x", "y[x]"}]
(* 150407_Plot _ODE.jpg *)

enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.