4
$\begingroup$

I'm trying to find the analytical FWHM of the following function (that I know has a Bell-type envelope):

auto[t0_, tau_] := -4 (tau - t0 Coth[t0/tau]) Csch[t0/tau]^2

Here is what I tried so far:

1. Rescale the function to 1:

Limit[auto[t, tau], t -> 0]

(4 tau)/3

autoNorm[t0_, tau_] := -((3 (tau - t0 Coth[t0/tau]) Csch[t0/tau]^2)/tau)

2. Try (unsuccessfully) Solve

Solve[{autoNorm[t0, tau] == 1/2, tau > 0, t0 \[Element] Reals}, t0]

Solve::nsmet: This system cannot be solved with the methods available to Solve.

3. Try NSolve imposing tau=1

NSolve[{autoNorm[t0, 1] == 1/2, t0 \[Element] Reals}, t0]

{{t0 -> -1.35979}, {t0 -> 1.35979}}

4. Check whether the numerical result scales linearly with tau (it does)

autoNorm[1.3597924763052964` tau, tau]

1/2

What I need is an analytical formula for 1.3597924763052964` (even if I'm not completely sure it exists), as the FWHM is just 2 times this value. I tried Rationalize on the number (that clearly didn't work in this case). I tried to play with TrigExpand, TrigToExp, ExpandAll etc before feeding the function to Solve, but it didn't help either.

I expect the number to be some combination of square roots, exponentials and Logs (due to the nature of the input function), but I'm not 100% sure.

Any suggestion is more than welcome!

$\endgroup$
7
  • 1
    $\begingroup$ Typo in the first line: should be auto[t0_, tau_] = ... $\endgroup$
    – Roman
    Commented Jan 6, 2020 at 16:38
  • $\begingroup$ fixed, thanks! :D $\endgroup$
    – Fraccalo
    Commented Jan 6, 2020 at 16:43
  • 3
    $\begingroup$ Only approximation: ArcSec[-3 (3 + Sqrt[2]) + (82 Log[3])/5],but analytical formula not exist for you equation. $\endgroup$ Commented Jan 6, 2020 at 16:47
  • $\begingroup$ Thanks @MariuszIwaniuk ! Could you elaborate on why the analytical formula doesn't exist? $\endgroup$
    – Fraccalo
    Commented Jan 6, 2020 at 16:53
  • 3
    $\begingroup$ See: en.wikipedia.org/wiki/Transcendental_equation. It's seems a waste of time and life.:) $\endgroup$ Commented Jan 6, 2020 at 17:01

2 Answers 2

6
$\begingroup$
Clear["Global`*"]

auto[t0_, tau_] = -4 (tau - t0 Coth[t0/tau]) Csch[t0/tau]^2;

Verifying symmetry,

auto[t0, tau] == auto[-t0, tau]

(* True *)

maxV = Limit[auto[t0, tau], t0 -> 0]

(* (4 tau)/3 *)

autoNorm[t0_, tau_] = auto[t0, tau]/maxV

(* -((3 (tau - t0 Coth[t0/tau]) Csch[t0/tau]^2)/tau) *)

Restricting the domain to Reals, the exact value for the FWHM point for tau == 1 is expressed as a Root expression

(tfwhm = Solve[autoNorm[t0, 1] == 1/2, t0, Reals][[1]]) // InputForm

(* {t0 -> Root[{-1 + E^(-6*#1) - 
      (-21 - 24*#1)/E^(4*#1) - 
      (21 - 24*#1)/E^(2*#1) & , 1.3\
59792476305296405508513391097477440\
88`20.593565523497226}]} *)

Verifying,

autoNorm[t0, 1] /. tfwhm // FullSimplify

(* 1/2 *)

However, this is not the FWHM point for general tau, e.g.,

(autoNorm[t0, 2] /. tfwhm) // N

(* 0.833814 *)

To find the FWHM as a function of tau

fwhm[tau_?NumericQ] := Module[{tauR = Rationalize[tau, 0]},
  2*t0 /. Solve[autoNorm[t0, tauR] == 1/2, t0, Reals][[1]]]

Plotting the FWHM as a function of tau

Plot[
 fwhm[tau], {tau, 1/100, 10},
 Frame -> True,
 FrameLabel -> (Style[#, 14] & /@ {tau, FWHM})]

enter image description here

Since this appears linear

(FWHM[tau_] = ((fwhm[10] - fwhm[1])*tau + 10*fwhm[1] - 1*fwhm[10])/(10 - 1) //
     FullSimplify) // InputForm

(* (2*tau*
  (-Root[{21*Sinh[#1] + 
        Sinh[3*#1] - 24*Cosh[#1]*
         #1 & , 1.35979247630529640\
550851339109747744088`20.5935655234\
97226}] + Root[
    {-5 + (5 + 3*E^(#1/5)*
          (35 + 4*#1 + E^(#1/5)*
            (-35 + 4*#1)))/
        E^((3*#1)/5) & , 13.5979247\
6305296405508580536867166855385`20.\
60205999118258}]))/9 *)

Verifying that the result is the same for a larger interval

FWHM[tau] ==
  ((fwhm[1000] - fwhm[1])*tau + 1000*fwhm[1] - 1*fwhm[1000])/(1000 - 
     1) // FullSimplify

(* True *)

Since the Root expressions are exact, FWHM can be evaluated to any desired precision

FWHM[1.`50]

(* 2.7195849526105928110103621113550874258460333053779 *)

EDIT: Since Akku14 has shown that a simpler representation is possible, note that

FWHM[0]

(* 0 *)

Consequently, the linear equation can be simplified by using the point {0, 0} as one of the defining points.

(FWHM2[tau_] = fwhm[10]*tau/10) // InputForm

(* (tau*Root[{-5 + 5/E^((3*#1)/5) - 
      (-105 - 12*#1)/E^((2*#1)/5) - 
      (105 - 12*#1)/E^(#1/5) & , 13\
.5979247630529640550858053686716685\
5385`20.60205999118258}])/5 *)

Which is approximately,

FWHM2[tau] // N

(* 2.71958 tau *)

Verifying that this corresponds to a fwhm point

autoNorm[FWHM2[tau]/2, tau] // FullSimplify

(* 1/2 *)
$\endgroup$
4
$\begingroup$

The answer of @Bob Hanlon inspired me to find an alternative expression for FWHM as a multiple of the fwhm for tau = 1 multiplied with the function value at t0 = tau.

fact1 = (t0 /. First@Solve[autoNorm[t0, 1] == 1/2, t0,
          Reals][[1]])/autoNorm[1, 1]

FWHM[tau_] = 2*autoNorm[tau, tau]*fact1*tau

(*   (1/(1 - Coth[1]))(tau - tau Coth[1])* 
     Root[{-1 + E^(-6 #1) - E^(-4 #1) (-21 - 24 #1) - 
     E^(-2 #1) (21 - 24 #1) &, 1.35979247630529640551}]   *)

Proof

FWHM[1.`50]

(*   2.719584952610592811010362111355087425846033305378   *)

(2*t0 /. First@Solve[autoNorm[t0, 1] == 1/2, t0, Reals][[1]])// N[#, 49] &

(*   2.719584952610592811010362111355087425846033305378   *)

FWHM[11.`50]

(*   29.91543447871652092111398322490596168430636635916   *)

(2*t0 /. First@Solve[autoNorm[t0, 11] == 1/2, t0, Reals][[1]]) // N[#, 49] &

(*   29.91543447871652092111398322490596168430636635916   *)
$\endgroup$
1
  • $\begingroup$ +1 The proof is that with your definition for FWHM, autoNorm[FWHM[tau]/2, tau] // FullSimplify evaluates to 1/2 $\endgroup$
    – Bob Hanlon
    Commented Jan 6, 2020 at 22:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.