Convoluzione di una funzione discontinua

steelman
Saluto tutti i lettori del forum,

ho un atroce problema che mi attanaglia da qualche settimana. Premetto che non sono molto ferrato nel calcolo delle convoluzioni. :cry:
Devo effettuare una convoluzione tra due funzioni, di cui la prima risulta discontinua e la seconda continua. Espongo in modo più preciso il problema.
Si consideri una funzione f(t) che risulta continua nei seguenti intervalli:
f1(t) continua in [0,t1];
f2(t) continua in [t1,t2];
f3(t) continua in [t2,t3];
....
Le diverse fi(t) sono note.
Inoltre si consideri una funzione g(t) continua nell'intervallo [0,+inf]. Anche essa nota.
Le domande che sorgono sono le seguenti:
1) Come si effettua la convoluzione tra queste due funzioni?
2) Quali estremi di integrazione devo considerare nell'integrale di convoluzione?
3) E' possibile implementare in mathematica un tale problema?

Ringrazio in anticipo tutti coloro che perderanno anche un solo attimo della loro vita per leggere tale abominio. :D :D

Risposte
Rigel1
Forse va bene qualcosa di questo tipo:
f[t_] := If[t < 0, 0, If[t < 1, t , If[t < 2, 3 + t^2, 0]]]
g[t_] := If[t < 0, 0, 1/(1 + t^2)]
conv[t_] := NIntegrate[f[t - s] g[s], {s, -Infinity, +Infinity}];
Plot[conv[t], {t, 0, 10}]

steelman
Ciao Rigel,
ti ringrazio in anzitutto per avermi risposto. Poichè ho notato che sei esperto nel settore, posto qualche formula per entrare più nel dettaglio del problema che sto analizzando.

La funzione discontinua risulta in particolare:
[tex]q_{fd}(\overline{t})=\overline{t}_r^{n-1} \overline{t}[/tex]

[tex]q_{fd}(\overline{t})=\overline{t}_r^{n-1} \overline{t} - S_i \overline{t}_r^{n-1} \left[\frac{K_i}{\overline{t}_{ci}} \left(1-e^{-\frac{\overline{t}-\overline{t}_{li}}{K_i}} \right)\right][/tex]

[tex]q_{fd}(\overline{t})=\overline{t}_r^{n-1} \overline{t} - S_i \overline{t}_r^{n-1} \left[\frac{K_i}{\overline{t}_{ci}} e^{-\frac{\overline{t}-\overline{t}_{li}}{K_i}} \left(e^{\frac{\overline{t}_{ci}}{K_i}}-1\right)\right][/tex]

[tex]q_{fd}(\overline{t})=\overline{t}_r^{n-1} - S_i \overline{t}_r^{n-1} \left[\frac{K_i}{\overline{t}_{ci}} e^{-\frac{\overline{t}-\overline{t}_{li}}{K_i}} \left(e^{\frac{\overline{t}_{ci}}{K_i}}-1\right)\right][/tex]

[tex]q_{fd}(\overline{t})=\overline{t}_r^{n-1} (1-\overline{t}-\overline{t}_r) - S_i \overline{t}_r^{n-1} \left[\frac{K_i}{\overline{t}_{ci}} e^{-\frac{\overline{t}-\overline{t}_{li}}{K_i}} \left(e^{\frac{\overline{t}_{li}}{K_i}}-1\right)\right][/tex]

[tex]q_{fd}(\overline{t})=\overline{t}_r^{n-1} (1-\overline{t}-\overline{t}_r) + S_i \overline{t}_r^{n-1} \frac{K_i}{\overline{t}_{ci}} \left[1-e^{-\frac{\overline{t}-\overline{t}_{li}}{K_i}} \left(e^{\frac{\overline{t}_{li}}{K_i}}+e^{\frac{\overline{t}_{li}}{K_i}}-1\right)\right][/tex]

[tex]q_{fd}(\overline{t})=\overline{t}_r^{n-1} (1-\overline{t}-\overline{t}_r) + S_i \overline{t}_r^{n-1} \frac{K_i}{\overline{t}_{ci}} \left(e^{-\frac{\overline{t}_r}{K_i}}-1\right) \left(e^{-\frac{\overline{t}_{ci}}{K_i}}-1\right)e^{-\frac{\overline{t}-\overline{t}_{li}}{K_i}}[/tex]

[tex]q_{fd}(\overline{t})=S_i \overline{t}_r^{n-1} \frac{K_i}{\overline{t}_{ci}} \left(e^{\frac{\overline{t}_r}{K_i}}-1\right) \left(e^{\frac{\overline{t}_{ci}}{K_i}}-1\right)e^{-\frac{\overline{t}-\overline{t}_{li}}{K_i}}[/tex]

in cui solo t segnato è la variabile, gli altri simboli sono dei parametri di volta in volta definiti dalle specifiche del problema.
Ogni formula è definita e continua in un determinato intervallo. In particolare, seguendo l'ordine di esposizione delle relazioni:
[tex][0, \overline{t}_{li}], [\overline{t}_{li}, \overline{t}_{ci}+\overline{t}_{li}], [\overline{t}_{ci}+\overline{t}_{li}, 1], [1, \overline{t}_r], [\overline{t}_p, \overline{t}_r+\overline{t}_{li}], [\overline{t}_r+\overline{t}_{li}, \overline{t}_r+\overline{t}_{ci}+\overline{t}_{li}],[/tex]
[tex][\overline{t}_r+\overline{t}_{ci}+\overline{t}_{li}, 1+\overline{t}_r], [1+\overline{t}_r, \infty][/tex]

La funzione rispetto alla quale effettuare la convoluzione risulta:

g(t) = 1/k2 *(e^(-t/k2)) definita e continua nell'intervallo [0, +inf]

Adesso mi rivolgo di nuovo a te caro Rigel o qualsiasi altra anima pia presente nel forum.
Come posso implementare un siffatto problema in mathematica?

Ringrazio chiunque risponda in anticipo

P.S. non sono un utente esperto di mathematica

Rigel1
Definisci \(f\) (cioè \(q\)) concatenando gli "If" nella definizione in Mathematica.
Per la \(g\) va sostanzialmente già bene quanto scritto:
g[t_] := If[t < 0, 0, 1/k2 Exp[-t/k2]]

steelman
Ti ringrazio nuovamente Rigel,
utilizzando la metodologia da te proposta è possibile effettuare una analisi simbolica?
Ho provato ad implementare ma mi fornisce un errore...devo verificare se ho riportato in modo corretto le relazioni, oppure la convoluzione non possiede una soluzione in forma chiusa...

Rigel1
Se usi "NIntegrate" per il calcolo della convoluzione non c'è bisogno che essa abbia una forma chiusa, visto che l'integrale viene calcolato numericamente.

steelman
Grazie mille Rigel, mi stai fornendo dei notevoli input di riflessione.
Ma se volessi risolvere il problema in forma chiusa, in modo simbolico, quindi non numerico, devo utilizzare il comando integrate, vero?
Esiste un teorema o un metodo per verificare se il problema ammette una forma chiusa?

Rigel1
"steelman":
Ma se volessi risolvere il problema in forma chiusa, in modo simbolico, quindi non numerico, devo utilizzare il comando integrate, vero?

Sì.
Esiste un teorema o un metodo per verificare se il problema ammette una forma chiusa?

In generale no; se Mathematica non riesce a trovarlo in forma chiusa è probabile che non ci siano primitive elementari.

steelman
Grazie Rigel. Ho un altro dubbio, se imposto il problema nel seguente modo
g[t_] := If[t < 0, 0, 1/k2 Exp[-t/k2]]
f[t_] := If[t < 0, 0, 
  If[t < tl, tr^(n - 1)*t, 
   If[t < tc + tl, 
    tr^(n - 1)*t - s*tr^(n - 1)*((k/tc)*(1 - Exp (-(t - tl)/k))), 
    If[t < 1, 
     tr^(n - 1)*t - 
      s*tr^(n - 1)*((k/tc)*Exp (-(t - tl)/k)*(Exp (tc/k) - 1)), 
     If[t < tr, 
      tr^(n - 1) - 
       s*tr^(n - 1)*((k/tc)*Exp (-(t - tl)/k)*(Exp (tc/k) - 1)), 
      If[t < tr + tl, 
       tr^(n - 1)*(1 - t - tr) - 
        s*tr^(n - 1)*((k/tc)*Exp (-(t - tl)/k)*(Exp (tc/k) - 1)), 
       If[t < tr + tl + tc, 
        tr^(n - 1)*(1 - t - tr) + 
         s*tr^(n - 1)*(k/tc)*(1 - 
            Exp (-(t - tl)/k)*(Exp (tl/k) + Exp (tl/k) - 1)), 
        If[t < 1 + tr, 
         tr^(n - 1)*(1 - t - tr) + 
          s*tr^(n - 1)*(k/tc)*(Exp (-tr/k) - 1)*(Exp (-tc/k) - 1)*
           Exp (-(t - tl)/k), 
         If[t > 1 + tr, 
          s*tr^(n - 1)*(k/tc)*(Exp (-tr/k) - 1)*(Exp (-tc/k) - 1)*
           Exp (-(t - tl)/k)]]]]]]]]]
conv[t_] := Integrate[f[t - s] g[s], {s, 0, t}];

la sintassi risulta corretta?
Inoltre per visualizzare l'eventuale primitiva elementare quale codice devo utilizzare?
Se Mathematica procede in modo indefinito alla ricerca della soluzione con indicato: Running...Nome-file.nb, vuol dire che non è prevista una soluzione in forma chiusa del problema, vero?

Rigel1
Nella sintatti mi sembra ci siano diversi errori (così a prima vista ci sono gli argomenti di parecchi Exp fra parentesi tonde anziché quadre).
In "Running..." che non si ferma mai è un brutto segno (puoi comunque fermare il kernel in qualsiasi momento dal menu).

steelman
Riflettendo sul problema della convoluzione di una funzione discontinua per una funzione continua, ho escogitato un metodo per risolvere la questione...
Lo espongo in modo tale da aver dalle persone più esperte un giudizio sulla sua corretta applicazione.
Si consideri una funzione f(t) che risulta continua nei seguenti intervalli:
f1(t) continua in [0,t1];
f2(t) continua in [t1,t2];
f3(t) continua in [t2,+inf];

Inoltre si consideri una funzione g(t) continua nell'intervallo [0,+inf], rappresentata da un esponenziale negativo.

Per determinare la funzione h(t) pari alla convoluzione tra le precedenti funzioni ho pensato di effettuare le seguenti integrazioni:

Per 0<=t<=t1 [tex]\int_0^t f_1(\tau) \ g(t-\tau) d\tau[/tex]

Per t1<=t<=t2 [tex]\int_0^{t1} f_1(\tau) \ g(t-\tau) d\tau + \int_{t1}^t f_2(\tau) \ g(t-\tau) d\tau[/tex]

Per t1<=t< +inf [tex]\int_0^{t_1} f_1(\tau) \ g(t-\tau) d\tau + \int_{t_1}^{t_2} f_2(\tau) \ g(t-\tau) d\tau + \int_{t_2}^t f_3(\tau) \ g(t-\tau) d\tau[/tex]

Secondo voi luminari della matematica, la procedura ha un senso logico, oppure risulta una follia computazionale?

Ringrazio tutti coloro che sapranno fornirmi una strada da seguire.

Rigel1
La funzione \(h(t)\) è calcolata integrando su tutto \((0,+\infty)\); se vuoi puoi spezzare in tre parti questo integrale:
\[
h(t) = \int_0^{t_1} f_1(\tau) g(t-\tau)d\tau + \int_{t_1}^{t_2} f_2(\tau) g(t-\tau)d\tau + \int_{t_1}^{+\infty} f_3(\tau) g(t-\tau)d\tau
\]

steelman
In questo modo, però, cerco di trovare una sola primitiva continua.
Se invece la primitiva risulta discontinua?
Come potrei procedere?

franco83
Salve ho un piccolo problema devo calcolare un integrale di convoluzione di una funzione continua dove all'interno della funzione mi variano i parametri che li devo calcolare in modo ottimale come poss fare.L'integrale è il seguente:
Y=∫〖u(t)*I(t)dt,gli estremi sono 0 e t
dove u=omega*b1*exp(-b1*t)+(1-omega)b2*exp(-b2t),è la funzione, è I è una serie di punti

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.