5

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]

bbgodfrey
  • 61,439
  • 17
  • 89
  • 156
Mariusz Iwaniuk
  • 13,841
  • 1
  • 25
  • 41
  • 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. – Mario Krenn Dec 30 '16 at 00:08
  • 1
    @NicoDean This type of equation is supported by DSolve since v11 :) – xzczd Dec 30 '16 at 03:05

1 Answers1

4

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.

bbgodfrey
  • 61,439
  • 17
  • 89
  • 156