Mercurial > forge
changeset 2634:9bd7ad32f2a7 octave-forge
Matrix support.
author | sis-sou |
---|---|
date | Mon, 09 Oct 2006 08:20:53 +0000 |
parents | e1e293d18048 |
children | 95951526b7b2 |
files | main/specfun/inst/expint_E1.m main/specfun/inst/expint_Ei.m |
diffstat | 2 files changed, 12 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/main/specfun/inst/expint_E1.m Sun Oct 08 21:41:04 2006 +0000 +++ b/main/specfun/inst/expint_E1.m Mon Oct 09 08:20:53 2006 +0000 @@ -24,17 +24,13 @@ ## ## See also expint_Ei, expint. -function v = expint_E1(x) +function y = expint_E1(x) if (nargin != 1) usage ("expint_E1(x)"); endif - if(x > 0 && imag(x)==0) - v = -expint_Ei(-x); - else - if(imag(x) > 0) - v = -expint_Ei(-x) -i.*pi; - else - v = -expint_Ei(-x) +i.*pi; - endif - endif -endfunction \ No newline at end of file + y = x; + y(imag(x) > 0 & imag(x) != 0) = -expint_Ei(-y(imag(x) > 0 & imag(x) != 0)) -i.*pi; + y(imag(x) < 0 & imag(x) != 0) = -expint_Ei(-y(imag(x) < 0 & imag(x) != 0)) +i.*pi; + y(real(x) >= 0 & imag(x)==0) = -expint_Ei(-y(real(x) >= 0 & imag(x)==0)); + y(real(x) < 0 & imag(x)==0) = -expint_Ei(-y(real(x) < 0 & imag(x)==0)) -i.*pi; +endfunction; \ No newline at end of file
--- a/main/specfun/inst/expint_Ei.m Sun Oct 08 21:41:04 2006 +0000 +++ b/main/specfun/inst/expint_Ei.m Mon Oct 09 08:20:53 2006 +0000 @@ -28,11 +28,12 @@ if (nargin != 1) usage ("expint_Ei(x)"); endif + y = zeros(size(x)); F = @(x) exp(-x)./x; - s = columns(x); + s = prod(size(x)); for t = 1:s; if(x(t)<0 && imag(x(t)) == 0) - y = -quad(F,-x(t),Inf); + y(t) = -quad(F,-x(t),Inf); else if(abs(x(t)) > 2 && imag(x(t)) == 0) y(t) = expint_Ei(2) - quad(F,-x(t),-2); @@ -49,9 +50,8 @@ endif; ## Serie Expansion else - y(t) = 0; - for i = 1:100; - y(t) = y(t) + x(t).^i./(i.*factorial(i)); + for k = 1:100; + y(t) = y(t) + x(t).^k./(k.*factorial(k)); endfor y(t) = 0.577215664901532860606512090082402431 + log(x(t)) + y(t); endif