Group Abstract Group Abstract

Message Boards Message Boards

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

Commutators of differential and integral operators

Posted 2 years 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

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

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

POSTED BY: Gianluca Gorni

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.

Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard