# Convolve gives inconsistent results if performed symbolically and numerically

Response from Wolfram Technical Support at end.

Suppose that I have an instrument response function of the form:

response[t_]=0.2583*(1/(E^(0.25*(-2.6 + t))*(1 + 13.5/E^(1.67*(-2.6 +
t)))^10.9) + (961*(1 - E^(-0.236*(-2.6 + t))))/
(E^(1.67*(-2.6 + t))*(1 + 13.5/E^(1.67*(-2.6 + t)))^11.9))


This function looks like this:

I got this function by fitting experimental data where my underlying signal should be a step function, and then taking the derivative of that fit. So the natural thing to do next is to convolve this instrument response function with a step function to verify that I am getting simulated data that matches experiment.

instantAddition[t_, t0_, amp_] = amp UnitStep[t - t0];


When I try this using fixed values of t0 and amp, it works:

simulatedData[t_] = Convolve[instantAddition[x, 50, 3.92],
response[x], x, t];
Plot[simulatedData[t], {t, 0, 200}, PlotRange -> Full]


But when I try to do the convolution with t0 and amp unspecified (because they should really be fitting parameters), and then plug in those same values that I used above, everything blows up.

simulatedData2[t_, t0_, amp_] = Convolve[instantAddition[x, t0, amp],
response[x], x, t];
Plot[simulatedData2[t, 50, 3.92], {t, 0, 200}, PlotRange -> Full]


What is going on here?

Edited to add an attempted (and failed) workaround: So I was worried that the step function was causing the problem, so I tried to replace the step function with a sigmoid that has a much faster rise than my data point spacing, but that broke the first case!

Edited to add response from Wolfram Technical Support: This is a machine underflow problem. They provided a workaround, and said that the issue remains under investigation. The workaround is:

Plot[Rationalize[simulatedData2[t, 50, 3.92], 0] // Evaluate,
{t, 0, 200}, PlotRange -> Full, WorkingPrecision -> 20] // Quiet

• Which version of Mathematica are you using? – mikado May 22 '19 at 19:48
• This is on 11.3.0.0 on a 64-bit Windows 8.1 system. I also have access to 12.0 on another machine, and will edit this comment with whether I get the same results on that platform as soon as I test it. – Kevin Ausman May 22 '19 at 19:51
• It works fine for me - I got the correct plot with simulatedData2. – MelaGo May 22 '19 at 19:57
• When I try it on MMA v. 12, the first version (with the fixed t0 and amp values) breaks. – Kevin Ausman May 22 '19 at 19:57
• I am on MMA 9.0, Windows XP. – MelaGo May 22 '19 at 20:24

response[t_] =