필터 지우기
필터 지우기

gamma function for N>100

조회 수: 9 (최근 30일)
Ladan Avazpour
Ladan Avazpour 2018년 10월 8일
댓글: Ladan Avazpour 2018년 10월 9일
Hi, everyone.
I have written a simple code by using a gamma function. when I choose N>98, the answer is Nan. What should I do to fix this problem?
function sii = diagonals(n, al, alp, bet)
ssi = zeros(1,n+1);
for i = 1:n+1
sii(i) = (2^(al+1)*(gamma(i-1+alp+1))*(gamma(i-1+bet+1)))/((2*(i-1)+al+1)*(factorial(i-1))^2);
end
end
  댓글 수: 2
John D'Errico
John D'Errico 2018년 10월 8일
편집: John D'Errico 2018년 10월 8일
Is there a good reason why you have not just used gamma itself? Why would you write your own poor code to compute something that is computed well already for you? I'm not going to try to decrypt what you are doing based on undocumented, poorly written code. Perhaps you are trying to write your own incomplete gamma. Oops, also exists already, part of MATLAB.
Ladan Avazpour
Ladan Avazpour 2018년 10월 8일
I have done this after I found that the gamma function is not working for big number and I think it may work if I can add something to it. In addition, this is my first time using Matlab and I just learning.

댓글을 달려면 로그인하십시오.

채택된 답변

Walter Roberson
Walter Roberson 2018년 10월 9일
If gammaln cannot be made to suit your purpose then you should use the symbolic toolbox or equivalent
  댓글 수: 1
Ladan Avazpour
Ladan Avazpour 2018년 10월 9일
Thank you. gamma(sym(X)) is working properly.(after double(x))

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

John D'Errico
John D'Errico 2018년 10월 8일
No. You will not make it work for large values, when they exceed the limits of gamma itself. Your code is not better than what you will find inside gamma itself. Sorry, but NOT.
Instead, consider using the function gammaln, the natural log of the gamma function. In essentially all cases when gamma produces an overflow, gammaln will be the solution, by re-writing what you are doing to accommodate logs. Only consider exponentiating at the end.
gammaln(10000)
ans =
82099.7174964424
Those big numbers are meaningless in a double precision context, because they would vastly overflow the dynamic range of a double precision number.

카테고리

Help CenterFile Exchange에서 Gamma Functions에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by