incomplete_gamma.m
上传用户:szahd2008
上传日期:2020-09-25
资源大小:1275k
文件大小:1k
源码类别:

传真(Fax)编程

开发平台:

Matlab

  1. function [value] = incomplete_gamma ( vt, np)
  2. % This function implements Eq. (4.72) to compute the Incomplete Gamma Function
  3. % This function needs "factor.m" to run
  4. format long
  5. eps = 1.000000001;
  6. % Test to see if np = 1
  7. if (np == 1)
  8.    value1 = vt * exp(-vt);
  9.    value = 1.0 - exp(-vt);
  10.    return
  11. end
  12. sumold = 1.0;
  13. sumnew =1.0;
  14. calc1 = 1.0;
  15. calc2 = np;
  16. xx = np * log(vt+0.0000000001) - vt - factor(calc2);
  17. temp1 = exp(xx);
  18. temp2 = np / (vt+0.0000000001);
  19. diff = .0;
  20. ratio = 1000.0;
  21. if (vt >= np)
  22.    while (ratio >= eps)
  23.       diff = diff + 1.0;
  24.       calc1 = calc1 * (calc2 - diff) / vt ;
  25.       sumnew = sumold + calc1;
  26.       ratio = sumnew / sumold;
  27.       sumold = sumnew;
  28.    end
  29.    value = 1.0 - temp1 * sumnew * temp2; 
  30.    return  
  31. else
  32.    diff = 0.;
  33.    sumold = 1.;
  34.    ratio = 1000.;
  35.    calc1 = 1.;
  36.    while(ratio >= eps)
  37.       diff = diff + 1.0;
  38.       calc1 = calc1 * vt / (calc2 + diff);
  39.       sumnew = sumold + calc1;
  40.       ratio = sumnew / sumold;
  41.       sumold = sumnew;
  42.    end
  43.    value = temp1 * sumnew;
  44. end
  45.