       Numerical convolution for InterpolationFunction

• To: mathgroup at smc.vnet.net
• Subject: [mg77646] Numerical convolution for InterpolationFunction
• From: "Zhao, Liang" <ZhaoL at MedImmune.com>
• Date: Thu, 14 Jun 2007 05:30:29 -0400 (EDT)

```This is something I have been working on for long time but just can not
figure out.

The initial objective is very simple.
I want to transform expressions like a.f1[t].f2[t].f3[t]... to
a.f1[t]*f2[t]*f3[t]... (here "*" indicates convolution operation for
illustration purpose and is not Mathematica multiplication symbol). If
functions like f1[t], f2[t] & f3[t] have closed form solutions, the
solution can be as follows:

Clear[f1, f2, f3]
expr=a f3[t] f1[t] f2[t];
expr=expr/.Times->conv;
((expr//.conv[c_/;FreeQ[c,t],r__]->c*conv[r])//.conv[any___,a_[t_],
b_[t_]]:>(var=Unique[t];
conv[any,

function[Integrate[a[#-var]*b[var],{var,0,#}]][t]]))/.conv[
a_]:>a/.function->Function

However, if I want to extend the above code to f1[t], f2[t], f3[t] which
are InterpolationFunctions, where I need to change Integrate to
NIntegrate in the expression, problem starts:

NIntegrate::"nlim":  is not a valid limit of integration."
{a NIntegrate[f1[t-var] (NIntegrate[f2[#1-var]
f3[var],{var,0,#1}]&)[var],{var,0,t}]}

Later I find, Mathematica refuse to evaluate a function like:

NIntegrate[((t - t\$1383)) NIntegrate[[ExponentialE]^(t\$1383 - t\$1370)
[ExponentialE]^((-2) t\$1370), {t\$1370, 0, t\$1383}], {t\$1383, 0,
2}]

I tried many other routes but things seem to go to the right direction
and I know I must have been very stubborn somewhere. I sincerely ask
help from experts here. Any advice will be greatly appreciated!

L.Z.

```

• Prev by Date: Re: Problem with Documentation Center in Mathematica 6 under Linux
• Next by Date: Re: What is the compatibility guide?
• Previous by thread: Re: Integral that Mathematica 5.1 can do and Mathematica 6 cannot do (2)
• Next by thread: :: notation