Generalized exponential integral with negative argument
조회 수: 4 (최근 30일)
이전 댓글 표시
Is there a way to compute the generalized exponential integral E[a,x]=int_1^infty e^(-x t) t^a dt with negative x? In particular, I need to compute the integral int_1^z Exp[-y^b/b] dy where b<0 and z>1. (I need to do this for 1000’s of z-values so numerical integration is not an option) Mathematica tells me this equals an expression involving ExpIntegralE[(-1 + b)/b, 1/b] (to be precise ExpIntegralE[(-1 + b)/b, 1/b] - z ExpIntegralE[(-1 + b)/b, z^b/b])/b. So since b<0, x=1/b is negative, and this causes a problem.
There seems to be a related thread but with no answer https://www.mathworks.com/matlabcentral/newsreader/view_thread/289192
Finally, there is an implementation of E[a,x] on file exchange https://www.mathworks.com/matlabcentral/fileexchange/52694-generalised-exponential-integral but it cannot handle negative x-values.
댓글 수: 0
채택된 답변
Star Strider
2016년 9월 12일
댓글 수: 10
Star Strider
2016년 9월 15일
My (our) pleasure!
Add your vote to mine for Walter’s Answer, and Walter gets the same 4 RP’s I got.
Walter Roberson
2016년 9월 15일
The defining formula for Ei with two arguments is in terms of the Gamma function, which has singularities at every negative integer, so if your 1/b is a negative integer you should be expecting a singularity.
추가 답변 (1개)
Walter Roberson
2016년 9월 12일
편집: Walter Roberson
2016년 9월 12일
This formula appears to work. It requires the symbolic toolbox
(-z^(b+1)*hypergeom([(1/2)*(b+1)/b], [3/2, (1/2)*(3*b+1)/b], (1/4)*z^(2*b)/b^2)+b*z*(b+1)*hypergeom([(1/2)/b], [1/2, (1/2)*(2*b+1)/b], (1/4)*z^(2*b)/b^2)+hypergeom([(1/2)*(b+1)/b], [3/2, (1/2)*(3*b+1)/b], (1/4)/b^2)+(-b^2-b)*hypergeom([(1/2)/b], [1/2, (1/2)*(2*b+1)/b], (1/4)/b^2))/(b*(b+1))
Note: this might fail if 1/b is an integer
Reference: Maple
댓글 수: 2
Walter Roberson
2016년 9월 13일
편집: Walter Roberson
2016년 9월 15일
syms b z
G = (-z^(b+1)*hypergeom([(1/2)*(b+1)/b], [3/2, (1/2)*(3*b+1)/b], (1/4)*z^(2*b)/b^2)+b*z*(b+1)*hypergeom([(1/2)/b], [1/2, (1/2)*(2*b+1)/b], (1/4)*z^(2*b)/b^2)+hypergeom([(1/2)*(b+1)/b], [3/2, (1/2)*(3*b+1)/b], (1/4)/b^2)+(-b^2-b)*hypergeom([(1/2)/b], [1/2, (1/2)*(2*b+1)/b], (1/4)/b^2))/(b*(b+1));
GG = subs(G, {z, b}, {linspace(1,2,1000), -sqrt(pi)});
GGn = double(GG);
참고 항목
카테고리
Help Center 및 File Exchange에서 Calculus에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!