Message Boards Message Boards


Heuristics and tricks in computational symbolic mathematics

Posted 9 months ago
1 Reply
2 Total Likes

Mathematica sometimes fails to compute symbolic solutions when posed in the direct or obvious code, but succeeds when the same fundamental problem is posed in a slightly different way, or when assumptions are made explicit, or other tricks and hacks.

Example (v. 11.3):

> Integrate[  ((I E^(I t) + 2 I E^(I x)) PolyLog[2, 1 - E^(I (t - x))])/(E^(I (t + 2 x))),   x]

fails to integrate, but if it is split into the two component integrals in the natural way, it succeeds. (The two component answers can be added and then processed with FullSimplify.)

As a result, there must be cases where users have given up in frustration when the proper hack or trick would have solved their problem.

As a service to the community (and for my own use), I'd like to collect in one place examples of such tricks and hacks that have yielded symbolic solutions when the direct or "obvious" approach failed.

(I'm not interested in numerical hacks... as these are of a fundamentally different sort.)

Some of the tricks I've come across include:

  • expressing constraints in novel ways
  • solving a "simpler" integral symbolically and then taking the limit of some variable to the desired value
  • forcing a "smart" change of variables
  • breaking an integral into component parts (as above)

Again, I'd like to limit consideration to symbolic computational mathematics, so I expect most answers will involve Integrate, D, Solve, DSolve, Simplify, and such. As a mild request, I think we would all best profit from minimal problems that require a particular hack.

Mathematica's symbolic manipulation is an extraordinary tool, but like all complex tools, its power and applicability is enhanced with the user knows how best to use it... and that sometimes includes non-obvious heuristics and hacks.

Posted 9 months ago

Crossposted here.

Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
or Discard

Group Abstract Group Abstract