Group Abstract Group Abstract

Message Boards Message Boards

0
|
2.3K Views
|
3 Replies
|
2 Total Likes
View groups...
Share
Share this post:

Commutators of differential and integral operators

Posted 1 year ago

I would like to be able to explore if certain variable coefficient differential operator commute with integral operators.

As a toy example Grünbaum (Grünbaum, F. Alberto. "A remark on Hilbert's matrix." Linear Algebra and its Applications 43 (1982): 119-124.) mentions that on L^2[0.1] the integral operator K with kernel 1/(x+y) commutes with the differential operator P where Pu (t) = ((1-t^2)t^2 u')' -2 t^2 u

I wanted to make a pure function for the operators for example

K = Function[f,  Function[t, Integrate[f[s]/(t + s), {s, 0, 1}]]]

and similarly P and then to be able to evaluate the commutator with something like

K@*P - P@*K

By hand it is fairly easy and uses integration by parts, but obviously I want to do much more complicated cases! The difficulties I have are that Mathematica will not simplify the composition of operators, unless applied to a function, and then only a specific function. And it does not understand subtraction of operators.
Am I going about this the wrong way? Is it something Mathematica can do.

So far I verified in on a Fourier basis in L^2 with Mathematica, it generates two pages of output but FullSimplify gets it to zero.

3 Replies

Wow Thank you Gianluca so much. And equals zero!

Can I just check the extrema takes the range of integration from opK, has it made any assumption about t to avoid t+s==0? I had to put lots of "Assuming" to simplify explicit cases.

It seems that with generic symbolic functions no convergence check is attempted.

POSTED BY: Gianluca Gorni

Mathematica does not do this kind of calculations automatically, but we can mimic what we would do by hand.

opK = Function[f, Function[t, Integrate[f[s]/(t + s), {s, 0, 1}]]];
opP = Function[u, 
   Function[t, D[((1 - t^2) t^2 u'[t]), t] - 2 t^2 u[t]]];
commutator = Simplify[opK[opP[f]][t] - opP[opK[f]][t]]

We can introduce some rules to bring the commutator into a desired form:

integralDistribute = 
  Integrate[func_, extrema_] /; Head[Expand[func]] == Plus :> 
   Map[Integrate[#, extrema] &, Expand[func]];
integralByParts[func_] = 
  Integrate[
    smthg_*Derivative[1][func][s], {s, a_, 
     b_}] :> (smthg func[s] /. s -> b) - (smthg func[s] /. s -> a) - 
    Integrate[func[s] Together[D[smthg, s]], {s, a, b}];
bringFactorsInside = 
  HoldPattern[fact_*Integrate[func_, extrema_]] :> 
   Integrate[fact*func, extrema];
integralCollect = 
  Integrate[func1_, extrema_] + Integrate[func2_, extrema_] :> 
   Integrate[func1 + func2, extrema];

Finally:

commutator /. integralDistribute /. integralByParts[f] /. 
      integralByParts[f'] /. integralByParts[f] /. 
    integralDistribute /. bringFactorsInside //. 
  integralCollect // Simplify
POSTED BY: Gianluca Gorni
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard