Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > Idl-pvware > Re: Confluent H...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 2 of 8 Topic 5449 of 6129
Post > Topic >>

Re: Confluent Hypergeometric Function of the First Kind

by Spon <christoph.blau@[EMAIL PROTECTED] > Feb 21, 2008 at 06:30 AM

On Feb 20, 3:44 pm, noahh.schwa...@[EMAIL PROTECTED]
 wrote:
> Hello everyone,
>
> I am looking for the Confluent Hypergeometric Function of the First
> Kind in the IDL Math Library but it does not seem to be implemented!
>
> I would like to use a function similar to the Hypergeometric1F1[a, b,
> z] of Mathematica [http://reference.wolfram.com/mathematica/ref/
> Hypergeometric1F1.html].
>
> I have not found what I was looking for, and so decided to try to code
> it my self... [sigh...]. Beeing a fresh beginner in IDL this is a hard
> task!
>
> Would anybody know how to code an infinite series expansion like the
> Hypergeometric1F1?
>
> Thank you in advance for your time!
> Noah

Noah,

here's my attempt. It accepts only scalar inputs for A and B, while Z
can be a vector. I've tested it for the examples on the mathematica
site and it seems to give correct results, and works correctly for
complex input too as far as I can tell. 'Precision' is an input
variable to specify how close two successive iterations have to be
before the function assumes they are the same and aborts the while
loop. Default is 7 (i.e. stop when results differ by 10^-7 or less).
If you're finding this programme is running very slow, try decreasing
the precision (I was surprised how fast it runs despite the while
loop, actually!)

Ideally the input parameters should all be double precision before you
make the call to the funcion, but the function converts them if
they're not.

If you want all your inputs to be vectors (not just Z), I'm sure it
can be done, but it'd be a bit more complicated. :-)

Take care,
Chris

FUNCTION HYPERGEOMETRICONEFONE, A, B, Z, $
 PRECISION = Precision, $
 K = K ; K is an output parameter to count No. of WHILE loops
performed.

 ; References:
 ; http://reference.wolfram.com/mathematica/ref/Hypergeometric1F1.html
 ; http://en.wikipedia.org/wiki/Confluent_hypergeometric_function

IF N_PARAMS() NE 3 THEN MESSAGE, 'Must input A, B & Z as 3 input
parameters.'
IF N_ELEMENTS(A) GT 1 THEN MESSAGE, 'Variable A must be a scalar.'
IF N_ELEMENTS(B) GT 1 THEN MESSAGE, 'Variable B must be a scalar.'

A *= 1.0D ; Double precision or double complex scalar
B *= 1.0D ; Double precision or double complex scalar
Z *= 1.0D ; Double precision or double complex scalar or vector
IF N_ELEMENTS(Precision) EQ 0 THEN $
  Precision = 7L ELSE $
    Precision = (LONG(Precision))[0]
Cutoff = 10D^(-1D * Precision) > (MACHAR()).EPS ; Cutoff can't be
smaller than machine accuracy!

K = 0L
ThisResult = REPLICATE(0D, N_ELEMENTS(Z))
WHILE (N_ELEMENTS(LastResult) EQ 0) || (MAX(ABS(LastResult -
ThisResult)) GT Cutoff) DO BEGIN
    LastResult = ThisResult
    AK = GAMMA(A + K) / GAMMA(A) ; Define (A)k
    BK = GAMMA(B + K) / GAMMA(B) ; Define (B)k
    F = (AK * Z^K) / (BK * FACTORIAL(K)) ; Evaluate function.
    ThisResult = LastResult + F
    K += 1
ENDWHILE ; Until result is good to Precision

 ; Error if not enough while loops to give accurate results.
IF K LE 1 THEN MESSAGE, 'Function failed. Try greater precision.'

RETURN, ThisResult
END
 




 8 Posts in Topic:
Confluent Hypergeometric Function of the First Kind
noahh.schwartz@[EMAIL PRO  2008-02-20 07:44:49 
Re: Confluent Hypergeometric Function of the First Kind
Spon <christoph.blau@[  2008-02-21 06:30:10 
Re: Confluent Hypergeometric Function of the First Kind
Dan Larson <dlarson@[E  2008-02-21 08:26:56 
Re: Confluent Hypergeometric Function of the First Kind
noahh.schwartz@[EMAIL PRO  2008-02-22 02:36:05 
Re: Confluent Hypergeometric Function of the First Kind
Spon <christoph.blau@[  2008-02-22 04:46:29 
Re: Confluent Hypergeometric Function of the First Kind
Spon <christoph.blau@[  2008-02-22 05:16:22 
Re: Confluent Hypergeometric Function of the First Kind
Dan Larson <dlarson@[E  2008-02-22 07:30:08 
Re: Confluent Hypergeometric Function of the First Kind
Matthias Cuntz <mc@[EM  2008-03-05 23:01:23 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Sat Aug 30 8:17:54 CDT 2008.