4
$\begingroup$

In this question DSolve(symbolic solution) gives wrong answer.

I analyzed the 13 equations in which DSolve gives the same solution.

 ClearAll["Global`*"];
 Remove["Global`*"];

 eqn1 = y''[x] == 1 + y[x] - Integrate[y'[t], {t, 0, x}];
 eqn2 = y''[x] == 1 + y[x] - Integrate[y'[x - t], {t, 0, x}];
 eqn3 = y''[x] == 1 + y[x] - Integrate[y[x - t], {t, 0, x}];
 eqn4 = y''[x] == 1 + y[x] - Integrate[y'[x + t], {t, 0, x}];
 eqn5 = y''[x] == 1 + y[x] - Integrate[y[x + t], {t, 0, x}];
 eqn6 = y''[x] == 1 + y[x] - Integrate[2*y'[t], {t, 0, x}];
 eqn7 = y''[x] == 1 + y[x] - Integrate[t*y'[t], {t, 0, x}];
 eqn8 = y''[x] == 1 + y[x] - Integrate[x*y'[t], {t, 0, x}];
 eqn9 = y''[x] == 1 + y[x] - Integrate[y[t]/(1 + x), {t, 0, x}];
 eqn10 = y''[x] == 1 + y[x] - Integrate[y'[t]/(1 + x), {t, 0, x}];
 eqn11 = y''[x] == 1 + y[x] - Integrate[y'[t]/(1 + t), {t, 0, x}];
 eqn12 = y''[x] == 1 + y[x] - Integrate[y'[t]*Sin[t], {t, 0, x}];
 eqn13 = y''[x] == 1 + y[x] - Integrate[y'[t]*Sin[x], {t, 0, x}];

ic = {y[0] == 0, y'[0] == 0};

sol1 = y[x] /. First@DSolve[{eqn1, ic}, y@x, x](*Wrong solution.It should be: y[x]=x^2/2 *)
sol2 = y[x] /. First@DSolve[{eqn2, ic}, y@x, x](*Wrong solution*)
sol3 = y[x] /. First@DSolve[{eqn3, ic}, y@x, x](*Wrong solution*)
sol4 = y[x] /. First@DSolve[{eqn4, ic}, y@x, x](*Wrong solution*)
sol5 = y[x] /. First@DSolve[{eqn5, ic}, y@x, x](*Wrong solution*)
sol6 = y[x] /. First@DSolve[{eqn6, ic}, y@x, x](*Wrong solution*)
sol7 = y[x] /. First@DSolve[{eqn7, ic}, y@x, x](*Wrong solution*)
sol8 = y[x] /. First@DSolve[{eqn8, ic}, y@x, x](*Wrong solution*)
sol9 = y[x] /. First@DSolve[{eqn9, ic}, y@x, x](*Wrong solution*)
sol10 = y[x] /. First@DSolve[{eqn10, ic}, y@x, x](*Wrong solution*)
sol11 = y[x] /. First@DSolve[{eqn11, ic}, y@x, x](*Wrong solution*)
sol12 = y[x] /. First@DSolve[{eqn12, ic}, y@x, x](*Wrong solution*)
sol13 = y[x] /. First@DSolve[{eqn13, ic}, y@x, x](*Wrong solution*)

Gives (*1/2 E^-x (-1 + E^x)^2*) the same answer for 13 equations?

The question is: is a bug?

Other equations that DSolve give wrong answer:

eqn14 = y''[x] == 1 + y[x] - Integrate[1 + y'[t], {t, 0, x}];
eqn15 = y''[x] == 1 + y[x] - Integrate[x + y'[t], {t, 0, x}];
eqn16 = y''[x] == 1 + y[x] - Integrate[t + y'[t], {t, 0, x}];
eqn17 = y''[x] == 1 + y[x] - Integrate[x + y[t], {t, 0, x}];
eqn18 = y''[x] == 1 + y[x] - Integrate[t + y[t], {t, 0, x}];
eqn19 = y''[x] == 1 + y[x] - Integrate[1 + y[t], {t, 0, x}];

Checks eqn19 equation:

sol19 = y[x] /. First@DSolve[{eqn19, ic}, y@x, x]
(D[#, {x, 2}] == 1 + # - Integrate[(1 + (# /. x -> t)), {t, 0, x}]) & /@ {sol19} // FullSimplify
 (* {2 + x^2 == 2 (E^-x + x)} *) 

not True.

Edited:

From Wolfram Technical Support:

Thank you for contacting Wolfram Technical Support. I have confirmed that DSolve is giving the wrong result for the examples you provided by direct substitution. I have filed a report with our developers regarding this issue, and included the example equations you provided. Thank you for bringing this to our attention. RE: [CASE:3808125]

$\endgroup$
  • $\begingroup$ In Mathematica 9, it shows the following warning: DSolve::litarg: "To avoid possible ambiguity, the arguments of the dependent variable in [...eqn here...] should literally match the independent variables. " and does not evaluate anything. $\endgroup$ – Mario Krenn Dec 30 '16 at 0:08
  • 1
    $\begingroup$ @NicoDean This type of equation is supported by DSolve since v11 :) $\endgroup$ – xzczd Dec 30 '16 at 3:05
4
$\begingroup$

A clear pattern emerges. (The initial conditions are ignored for generality.)

(y[x] /. First@DSolve[#, y[x], x]) & /@ {eqn1, eqn2, eqn3, eqn4, eqn5,
    eqn6, eqn7, eqn8, eqn9, eqn10, eqn11, eqn12, eqn13}
(* {-1 + E^x C[1] + E^-x C[2], -1 + E^x C[1] + E^-x C[2], -1 + E^x C[1] + E^-x C[2], ... *)

indeed gives the same answer in each case, and the answer is the same as that from

(y[x] /. First@DSolve[#, y[x], x]) &[y''[x] == 1 + y[x]]
(* -1 + E^x C[1] + E^-x C[2] *)

Evidently, the integral is set to zero by DSolve. Consider next the second set of equations

(y[x] /. First@DSolve[#, y[x], x]) & /@ {eqn14, eqn15, eqn16, eqn17, eqn18, eqn19}
(* {-1 + x + E^x C[1] + E^-x C[2], 1 + x^2 + E^x C[1] + E^-x C[2], 
    x^2/2 + E^x C[1] + E^-x C[2], 1 + x^2 + E^x C[1] + E^-x C[2], 
    x^2/2 + E^x C[1] + E^-x C[2], -1 + x + E^x C[1] + E^-x C[2]} *)

Now, compare these with the following, obtained by explicitly integrating the portions of the integrands independent of y and discarding the portions dependent on y.

(y[x] /. First@DSolve[y''[x] == 1 + y[x] - #, y[x], x]) & /@ {x, x^2, x^2/2, x^2, x^2/2, x}

The outputs are identical to those just above. DSolve simply ignores y-dependent integrands. Incidentally, this same behavior occurs in the equation of the earlier question cited in the first line of this question.

Surely, this is a bug.

Version 11.1 update (Still true for 11.3)

DSolve now returns unevaluated for all thirteen equations. Although perhaps unsatisfying, this certainly is better than returning the wrong answer.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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