1
$\begingroup$

I'm fitting the following Von Mises type function to some data:

$(A/2\pi)e^{k\cos(\theta)}+C$ where A and k are positive.

I want to calculate the width at half height from the lowest point of the curve. Note that for some values of $A$, $k$, and $C$ this is not the same as $1/2$ of the maximum value taken by the function. Instead, you can get those values just by setting $\cos(\theta) = 1$ and $\cos(\theta)=-1$. Those should be the maximum and minimum values taken on by the function for a given set of parameters. Then, plugging those in to the main equation and subtracting the min from the max, you get:

$(A/2\pi)[e^k-e^{-k}]$,

Now I want to get the half height, which is half of the above value, so that's $(A/4\pi)[e^k-e^{-k}]$.

So far so good. Now I want to solve for which $\theta$ the original equation takes those values. There should be two since this a symmetric function, but I only need one, because I know where the peak is, and also since the function is centered at 0, one should be equivalent the negative of the other. So I proceeded to solve the equation as so:

$(A/2\pi)e^{k\cos(\theta)}=(A/4\pi)[e^k-e^{-k}]$ (the $C$ was dropped because when finding the half-height the $C$ was re-centered to $0$).

Solving this for $\theta$ gives: $\theta=\operatorname{acos}(\ln(\sinh(k))/k)$

For large values of $k$ this gives the right answer, as tested against numeric methods. However, when $k$ becomes small, $\operatorname{acos}()$ becomes imaginary. I am then unsure of how to retrieve the solution. It's clear that the solution exists (I can still crawl alongthe contour of the function and numerically find a great approximation). It's also the case that replacing $\sinh()$ with $\cosh()$ produces a really good approximation, although $\cosh()$ begins to fail to approximate well as $k$ gets larger (again, tested with numerical methods).

So the question is, how to solve for those solutions analytically? Also, why does $\cosh()$ work so well in the range of small k but not in the range of larger $k$?

Thanks!

1 Answers 1

1

Ahh looks like I made a mistake. It's not sufficient to just do (Max - Min) / 2 to determine the point, but I have to add back the minimum point to take care of the fact that it recentered around 0. So it should be ((Max-Min)/2) + Min = (Max + Min)/2, which is the same cosh() result mentioned above. No wonder it's such a good 'approximation' since it's the actual real solution. Sinh() takes a lot of the same values as Cosh() for large k and therefore mislead me into thinking it was the correct expression.