Change multiplication operations into convolution operations (result & follow up question)

• To: mathgroup at smc.vnet.net
• Subject: [mg73751] Change multiplication operations into convolution operations (result & follow up question)
• From: "Zhao, Liang" <ZhaoL at MedImmune.com>
• Date: Tue, 27 Feb 2007 05:51:03 -0500 (EST)
• References: <erjp4f\$pt3\$1@smc.vnet.net> <200702230928.EAA17242@smc.vnet.net>

```Hi Jens and all,

Following up my previously posted question, I finally got a temporary
solution for my previous question to change multiplication operations
into convolution operations in a expression like below. Thank four
experts for their brilliant hints to approach to this problem. However,
the following code only work for functions like fi[t] that is with
explicit expressions.

expr=a f3[t] f1[t] f2[t];

expr=expr/.Times=AEconv;

((expr//.conv[c_/;FreeQ[c,t],r__]=AEc*conv[r])//.conv[any___,a_[t_],b_[t_
]]=A6(var=Unique[t];conv[any,function[Integrate[a[#-var]*b[var],{var,0,=
#}]][t]]))/.conv[a_]=A6a/.function=AEFunction

The output is exactly what I am expecting.

My question: under circumstances that fi[t] assumes numerical functions
in InterpolatingFunction format, how to make the above codes to work
equivalently. E.g.,

sol=NDSolve[{x'[t]S-y[t]-x[t]^2,y'[t]S2 =
x[t]-y[t],x[0]Sy[0]S1},{x[t],y[t]},{t,100}];

f1[t_]: =sol[[1,1,2]]

f2[t_] :=sol[[1,2,2]]

f3[t_]: =2 sol[[1,1,2]]

I tried to modify the codes accordingly via different ways, but failed.
Thank you for any hints.  Cheers,

Liang

Hi,

expr = C1 F1[t] ** F2[t] + C2 F3[t] ** F4[t] ** F1[t]

try

(expr //. NonCommutativeMultiply[any___, a_[t_], b_[t_]] :>
(var = Unique[t]; NonCommutativeMultiply[any,
function[Integrate[
a[# - var]*b[var], var]][t]])) /.
NonCommutativeMultiply[a_] :> a /. function -> Function

Regards
Jens

Zhao, Liang wrote:
> If I want to change the multiplication operations  into convolution
> operations in an arbitrary function such as
> C1 F1[t] F2[t] + C2 F3[t] F4[t] F1[t],
> where Fi(t) represents functions of t and Ci represents constant, into
> C1 F1[t] * F2[t] + C2 F3[t] * F4[t] * F1[t], where "*" indicate
> convolution.
>
> any good elegant way to do it? High appreciations!
>
> Liang
>
>
>

```

• Prev by Date: Re: deleting a title or subtitle in a notebook
• Next by Date: Integrate[Abs[Cos[u]], u] for u real
• Previous by thread: Re: Change multiplication operations into convolution operations
• Next by thread: Re: Change multiplication operations into convolution operations