Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2007
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

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