Convoluzione: segnali a supporto compatto

Clear["Global`"]

Consideriamo una funzione sommabile, ad esempio una funzione a supporto compatto:

f[x_] :=  If[Abs[x] > 1, 0, x/2 + 1/2]

Plot[f[x],  {x, -2, 2}];

Introduciamo la funzione

g[x_, ξ_] := f[x - ξ]

Disegniamo le tre funzioni f[ ξ ], f[ x - ξ ], f[ ξ ] f[ x - ξ ] ; ad esempio

Plot[{f[ξ],  f[1 - ξ],  
          f[ξ]* f[1 - ξ]},  {ξ, -3, 
          3}, 
PlotStyle -> {
{RGBColor[1, 0.5, 0]}, {RGBColor[1, 0, 1]}, {Thickness[
                0.008], RGBColor[1, 0, 0]}}];

Facciamo un'animazione:

Do[gr  =  
        Plot[{f[ξ],  f[x - ξ],  
            f[ξ]* f[x - ξ]},  {ξ, -3.5, 
            3.5}, 
PlotPoints -> 50, 
          PlotStyle -> {
{RGBColor[1, 0.5, 
                  0]}, {RGBColor[1, 0, 1]}, {Thickness[0.008], 
                RGBColor[1, 0, 
                  0]}}, 
DisplayFunction -> 
            Identity]; 
punto  =  
        Graphics[{PointSize[0.02],  RGBColor[0, 0, 1], 
            Point[{x, 0}]}]; 
Show[{gr, punto}, 
        DisplayFunction -> $DisplayFunction, 
AspectRatio -> 
          0.4, 
PlotRange -> {0, 
            1}, 
ImageSize -> {450, 
            250}], {x, -2.2, 2.2,  .05}]

Commento: evidenziata in rosso è la funzione prodotto f[ ξ ] f[ x - ξ ] , in blu il punto (x, 0). Calcoliamo esplicitamente la convoluzione:

Il prodotto delle due funzioni (nei punti che appartengono all'itersezione tra i rispettivi supporti) si scrive:

((t/2) + (1/2)) ((1/2) (-t + x) + (1/2)) // 
      Expand

Sull'intervallo [-2, 0] la convoluzione vale

Integrate[%, {t, -1, x + 1}]

Sull'intervallo [0, 2] la convoluzione vale

Integrate[%%, {t, x - 1, 1}]

In sintesi:

conv[x_] := 
      Which[x ≤ -2, 0, -2 < x ≤ 0, 
        (1/3) + (x/2) + ((x^2)/4) + ((x^3)/24), 0 <  x  ≤ 2, 
        (1/3) + (x/2) - ((x^2)/4) - ((x^3)/24),  2  <  x,  0]

grConv  =  
        Plot[conv[x], {x, -3, 
            3}, 
PlotStyle -> {Thickness[0.005], 
              RGBColor[0, 0, 1]}];

Completiamo l'animazione, mostrando anche il grafico dell convoluzione:

Do[gr  =  
        Plot[{f[ξ],  f[x - ξ],  
            f[ξ]* f[x - ξ]},  {ξ, -3.5, 
            3.5}, 
PlotPoints -> 50, 
          PlotStyle -> {
{RGBColor[1, 0.5, 
                  0]}, {RGBColor[1, 0, 1]}, {Thickness[0.008], 
                RGBColor[1, 0, 
                  0]}}, 
DisplayFunction -> 
            Identity]; 
punti  =  
        Graphics[{PointSize[0.02],  
            RGBColor[0, 0, 1], {Point[{x, 0}], 
              Point[{x, conv[x]}]}}]; 
segmento  =  
        Graphics[{Thickness[0.003],  RGBColor[0, 0, 1], 
            Line[{{x, 0}, {x, conv[x]}}]}]; 
Show[{grConv, 
          gr, punti,  segmento}, 
        DisplayFunction -> $DisplayFunction, 
AspectRatio -> 
          0.4, 
PlotRange -> {0, 
            1}, 
ImageSize -> {450, 
            250}], {x, -2.4, 2.4,  .05}]