# SolveDelayed has died?

Posted 9 years ago
8682 Views
|
3 Replies
|
5 Total Likes
|
 The referece still says (Mathematica 10.0.2 Win 7 64 Bit Home Premium) ?SolveDelayedSolveDelayed is an option to NDSolve. SolveDelayed -> False causes the derivatives to be solved for symbolically at the beginning. SolveDelayed -> True causes the ODEs to be evaluated numerically and the derivatives solved for at each step. let's use it In:= NDSolve[{2 x y'[x] + x^2 y''[x] + x^2 y[x] == 0, y' == 0, y == 0}, y, {x, 0, 1}, Method -> {"Shooting"}, SolveDelayed -> True] During evaluation of In:= NDSolve::bvdae: Differential-algebraic equations must be given as initial value problems. >> Out= NDSolve[{x^2 y[x] + 2 x Derivative[y][x] + x^2 (y^\[Prime]\[Prime])[x] == 0, Derivative[y] == 0, y == 0}, y, {x, 0, 1}, Method -> {"Shooting"}, SolveDelayed -> True] it's a linear ordinatry differential equation, what does the NDSolve::bvdae mean here? Does is mean SolveDelayed has died in NDSolve?If the SolveDelayed is not specified, the NDSolve::bvdae does not show up and a numerical solution is generated.
3 Replies
Sort By:
Posted 9 years ago
 SolveDelayed has been deprecated (it will continue working as before for backward compatibility). To treat the system as a DAE, instead of SolveDelayed -> True, one should use Method -> {"EquationSimplification" -> "Residual"}. See also the documentation. However, if this option is set, then the NDSolve::bdae message is expected, since there is no DAE support for boundary value problems.
Posted 9 years ago
 Thank you very much! First one gets In:= NDSolve[{D[x^2 D[y[x], x], x] == -x^2 (y[x])^(3/2), y' == 0, y == 0}, y , {x, 0, 1}, Method -> {"EquationSimplification" -> "Residual"}] During evaluation of In:= NDSolve::bvdae: Differential-algebraic equations must be given as initial value problems. >> Out= NDSolve[{2 x Derivative[y][x] + x^2 (y^\[Prime]\[Prime])[x] == -x^2 y[x]^(3/2), Derivative[y] == 0, y == 0}, y, {x, 0, 1}, Method -> {"EquationSimplification" -> "Residual"}] but the initial problem can be used to shoot the boundary condition rather straightforward Clear[sIV] sIV = First[NDSolve[{D[x^2 D[y[x], x], x] == -x^2 (y[x])^(3/2), y' == 0, y == 1.2029}, y , {x, 0, 1}, Method -> {"EquationSimplification" -> "Residual"}]]; Print["y = ", (y[x] /. sIV) /. x -> 1.]; Plot[y[x] /. sIV, {x, 0, 1}, PlotRange -> All] y = 1.00005 the plot is only interesting for the real p.o., but nevertheless here it is Posted 9 years ago
 This example from M. Trott, The Mathematica GuideBook for Numerics, § 1.11, (2006), p. 399 still works so it seems at least partially a cosmetic problem (SolveDelayed in red).