> All,
>
> I'm trying to simplifiy the following equation for the zero'th order
> modified Bessel function of the first kind. I'm using the
> approximation for the Bessel function as
>
> Io(z) = exp(z)/sqrt(2*pi*z)
>
> I would like to have the natural logarithm of this function
>
> log(Io(z)) = log(exp(z) / sqrt(2*pi*z))
>
> = z + log(1/sqrt(2*pi*z))
>
> but i don't want to have to calculate the log of a sqrt function.
> What I'd like is a simplification that gives me an easy way to calc
> the log(Io(z)) for each value of z. Any ideas?
>
> CW
If course, log(1/sqrt(x)) = -log(sqrt(x)) = -[log(x)]/2. Won't that do?
Jerry
--
Engineering is the art of making what you want from things you can get.
�����������������������������������������������������������������������
Reply by Mike Yarwood●March 4, 20052005-03-04
"CW" <prada_white@yahoo.ca> wrote in message
news:1109954279.983132.154090@g14g2000cwa.googlegroups.com...
> Thanks for all the quick responses Clay, Mike and Tim.
>
> So I guess i'm down to calculating z-log(z)/2 upon each iteration, as
> the other term can be precomputed. So is the calculation of a log term
> computationally expensive? That was my main motivation for trying to
> remove it.
>
> CW
>
Hi CW - in general yes. There are a whole load of tricks to simplify it
though most of which seem to have been discussed in this newsgroup so you
ought to find something to suit you in the archives if you are using fixed
point math. Also I believe that Ray Andraka published a trick on
www.dpsguru.com if you are using floating point.
best of luck - mike
Reply by CW●March 4, 20052005-03-04
Thanks for all the quick responses Clay, Mike and Tim.
So I guess i'm down to calculating z-log(z)/2 upon each iteration, as
the other term can be precomputed. So is the calculation of a log term
computationally expensive? That was my main motivation for trying to
remove it.
CW
Reply by CW●March 4, 20052005-03-04
Of course, In my haste i forgot about the negative sign...sorry to
offend.
CW
Reply by Tim Wescott●March 4, 20052005-03-04
CW wrote:
> All,
>
> I'm trying to simplifiy the following equation for the zero'th order
> modified Bessel function of the first kind. I'm using the
> approximation for the Bessel function as
>
> Io(z) = exp(z)/sqrt(2*pi*z)
>
> I would like to have the natural logarithm of this function
>
> log(Io(z)) = log(exp(z) / sqrt(2*pi*z))
>
> = z + log(1/sqrt(2*pi*z))
>
> but i don't want to have to calculate the log of a sqrt function.
> What I'd like is a simplification that gives me an easy way to calc
> the log(Io(z)) for each value of z. Any ideas?
>
> CW
My first idea is that you've forgotten some basic concepts about logarithms.
log(a*b) = log(a) + log(b).
log(a^x) = x * log(a).
1/sqrt(2*pi*z) = (2*pi*z)^(-1/2)
therefore log(1/sqrt(2*pi*z)) = -(log(2*pi) + log(z))/2.
You still have to calculate the log, but you now don't have to calculate
the square root as well.
--
Tim Wescott
Wescott Design Services
http://www.wescottdesign.com
Reply by Mike Yarwood●March 4, 20052005-03-04
"CW" <prada_white@yahoo.ca> wrote in message
news:8c58d246.0503040759.2d9d6f60@posting.google.com...
> All,
>
> I'm trying to simplifiy the following equation for the zero'th order
> modified Bessel function of the first kind. I'm using the
> approximation for the Bessel function as
>
> Io(z) = exp(z)/sqrt(2*pi*z)
>
> I would like to have the natural logarithm of this function
>
> log(Io(z)) = log(exp(z) / sqrt(2*pi*z))
>
> = z + log(1/sqrt(2*pi*z))
>
> but i don't want to have to calculate the log of a sqrt function.
> What I'd like is a simplification that gives me an easy way to calc
> the log(Io(z)) for each value of z. Any ideas?
>
> CW
Hi CW again : I should have said z-log(z)/2 -log(2*pi)/2 sorry.
Mike
Reply by CW●March 4, 20052005-03-04
Sorry, i should have added that z is not bounded -1 < z < 1 so I'm not
sure that the Mclaurin series will help me.
what i can say about z is that it will be a real non-negative number.
Does that shed any more light?
CW
Reply by Clay●March 4, 20052005-03-04
Hello CW,
If Io(z) approx exp(z)/sqrt(2*pi*z)
then log(Io(z)) approx z-0.5*log(2*pi*z)
= z-log(z)/2 -A where constant A = log(2pi)/2
IHTH,
Clay
Reply by Mike Yarwood●March 4, 20052005-03-04
"CW" <prada_white@yahoo.ca> wrote in message
news:8c58d246.0503040759.2d9d6f60@posting.google.com...
> All,
>
> I'm trying to simplifiy the following equation for the zero'th order
> modified Bessel function of the first kind. I'm using the
> approximation for the Bessel function as
>
> Io(z) = exp(z)/sqrt(2*pi*z)
>
> I would like to have the natural logarithm of this function
>
> log(Io(z)) = log(exp(z) / sqrt(2*pi*z))
>
> = z + log(1/sqrt(2*pi*z))
>
> but i don't want to have to calculate the log of a sqrt function.
> What I'd like is a simplification that gives me an easy way to calc
> the log(Io(z)) for each value of z. Any ideas?
>
> CW
Hi CW loq(sqrt(x)) = log(x)/2 (I think) so you are trying to simplify
z-log(z)/2-log(2*pi).
good luck - Mike
Reply by CW●March 4, 20052005-03-04
All,
I'm trying to simplifiy the following equation for the zero'th order
modified Bessel function of the first kind. I'm using the
approximation for the Bessel function as
Io(z) = exp(z)/sqrt(2*pi*z)
I would like to have the natural logarithm of this function
log(Io(z)) = log(exp(z) / sqrt(2*pi*z))
= z + log(1/sqrt(2*pi*z))
but i don't want to have to calculate the log of a sqrt function.
What I'd like is a simplification that gives me an easy way to calc
the log(Io(z)) for each value of z. Any ideas?
CW