Home > . > mj_qgamma.m

mj_qgamma

PURPOSE ^

MJ_QGAMMA The gamma inverse distribution function

SYNOPSIS ^

function x = mj_qgamma(p,a)

DESCRIPTION ^

MJ_QGAMMA   The gamma inverse distribution function

         x = mj_qgamma(p,a)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function x = mj_qgamma(p,a)
0002 %MJ_QGAMMA   The gamma inverse distribution function
0003 %
0004 %         x = mj_qgamma(p,a)
0005 
0006 %        Anders Holtsberg, 18-11-93
0007 %        Copyright (c) Anders Holtsberg
0008 % MJ 02/20/04 uses lpdfgam() to avoid overflow in dgamma
0009 %
0010   
0011 if any(any(abs(2*p-1)>1))
0012    error('A probability should be 0<=p<=1, please!')
0013 end
0014 if any(any(a<=0))
0015    error('Parameter a is wrong')
0016 end
0017 
0018 x = max(a-1,0.1);
0019 dx = 1;
0020 while any(any(abs(dx)>256*eps*max(x,1)))
0021 %   dx = (pgamma(x,a) - p) ./ dgamma(x,a,1);
0022    dx = (pgamma(x,a) - p) ./ exp(lpdfgam(x,a,1));
0023    x = x - dx;
0024    x = x + (dx - x) / 2 .* (x<0);
0025 end
0026 
0027 I0 = find(p==0);
0028 x(I0) = zeros(size(I0));
0029 I1 = find(p==1);
0030 x(I1) = zeros(size(I1)) + Inf;

Generated on Fri 16-Jun-2006 09:09:06 by m2html © 2003