I'm trying to use Mathematica to evaluate Integrals like:

$$\int_{\mathbb{R}} 2u(x)u^\prime(x) \mathrm{d}x = \left.u(x)^2\right|_{-\infty}^\infty = 0$$

Now the last step ist justified because $u$ decays to zero when approaching infinity (even $u \in \mathcal{S}(\mathbb{R})$). Now I'd like to know how to tell Mathematica about this property of $u$. So far I've tried

Integrate[u[x]*D[u[x], x], {x, -Infinity, Infinity}, Assumptions -> u[Infinity] == 0 && u[-Infinity] == 0]

or also with some finite interval:

Integrate[u[x]*D[u[x],x], {x, -a, a}, Assumptions -> u[a] == 0 && u[-a] == 0]

But none of those two gave me zero as an answer...

  • $\begingroup$ To my knowledge Integrate only gives integrals of specific functions. In your (general symbolic function) case i think it might work to write a replacement rule that performs symbolic integration by parts to solve your problem. $\endgroup$ Commented Nov 26, 2017 at 13:29

2 Answers 2


So we start by writing the solution of the integral as an equation (we'll see why later)

eq = integral == Integrate[2*u[x]*D[u[x], x], {x, -a, a}]

Now we formulate integration by parts as a replacement rule

byparts = Integrate[u_[x_] v_'[x_], {x_, a_, b_}] :> 
          (u[b] v[b] - u[a] v[a]) - Integrate[u'[x] v[x], {x, a, b}]

For this to work we also define another rule to pull any numeric constants out of the integral (we could do all in one replacement rule, but in this way i think it's clearer what happens and it's more modular).

pulloutconstants = Integrate[c_?NumericQ rest_, {x_, a_, b_}] :> 
                   c Integrate[rest, {x, a, b}]

Now if we pull out the constant out of the integral and apply our integration by parts rule we end up with

eq /. pulloutconstants /. byparts

Integration by part result

which is nice on one hand, because the rule worked, but still unsatisfying because we ended up with the same integral all over again. But since we know the two expressions for our integral should be the same we can combine the new equation from applying integration by parts with our original equation to get

{eq /. pulloutconstants, eq /. pulloutconstants /. byparts}
eq2 = Eliminate[%, integral]

integral equations

equations combined

Great! Now we can use our knowledge that u vanishes as a goes to infinity and we have shown our original hypothesis!

  eq2 /. {a -> \[Infinity]},
  Assumptions -> {u[-\[Infinity]] == 0, u[\[Infinity]] == 0}



Mathematica will compute the indefinite integral:

Integrate[u[x]*D[u[x], x], x]
(*  u[x]^2/2  *)

You could apply the fundamental theorem of calculus, ignoring questions of convergence:

  {-1, 1},
  Integrate[u[x]*D[u[x], x], x] /. {{x -> -Infinity}, {x -> Infinity}}],
 u[Infinity] == 0 && u[-Infinity] == 0]

(*  0  *)

In the OP's definite integral, Integrate does not ignore questions of convergence, I believe, which means that the result depends on the function u. I don't know if there's a way to pass properties of u to Integrate as Assumptions. The problem with assumptions is that they tend to be specific to the expression. For instance the assumption Limit[u[x], x -> Infinity] == 0 cannot be used in computing the limit of the expression u[x]^2/2 as given. Also, for the integral, one would need to specify that u[x] has no singularities at finite values of x. I don't know if that can be done.


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.