I am using matlab and enter three functions: Integral
,AddtoIntegralTerm1
and AddtoIntegralTerm2
. I want to add the three numbers, so I write it as follow
Integral(0,139)+AddtoIntegralTerm1(0,139)+AddtoIntegralTerm2(0,139)
which gives me a number 1048576
.
However, when I divided it by 1e21
(I calculate the order of each number which is 1e21
) and add, i.e. Integral(0,139)/1e21+AddtoIntegralTerm1(0,139)/1e21+AddtoIntegralTerm2(0,139)/1e21
, I get a number 0. Is it related to precision? How to fix it? The functions are listed below:
% Use of indefinite integral
pit=@(t)-MinOrMax.*...
(-1./lambda.*(exp(-lambda.*min(t,CutOff)))-(lambda.*beta)./(sigma.^2).*exp(-lambda.*t));
pitau=@(tau)MinOrMax.*...
(-1./lambda.*(exp(-lambda.*min(tau,CutOff)))-(lambda.*beta)./(sigma.^2).*exp(-lambda.*tau));
vt=@(t)-MinOrMax.*sigma.^2.*...
(1./(lambda.^2).*(exp(lambda.*min(t,CutOff)))+...
...
exp(-lambda.*CutOff)./(2.*lambda.^2).*(exp(2.*lambda.*t)-exp(2.*lambda.*min(t,CutOff)))+...
...
(lambda.*beta)./(sigma.^2.*lambda).*(exp(lambda.*t)));
vtau=@(tau)-MinOrMax.*sigma.^2.*...
(1./(lambda.^2).*(exp(lambda.*min(tau,CutOff)))+...
...
exp(-lambda.*CutOff)./(2.*lambda.^2).*(exp(2.*lambda.*tau)-exp(2.*lambda.*min(tau,CutOff)))+...
...
(lambda.*beta)./(sigma.^2.*lambda.^2).*(exp(lambda.*tau)));
Integral1=...
@(t,tau)sigma.^2./(2.*lambda.^2).*...
(1./(2.*lambda).*exp(-2.*lambda.*CutOff).*(exp(2.*lambda.*tau)-exp(2.*lambda.*t)).*(CutOff<t)+...
...
((CutOff-t)+exp(-2.*lambda.*CutOff)./(2.*lambda).*...
(exp(2.*lambda.*tau)-exp(2.*lambda.*CutOff))).*((CutOff<=tau).*(CutOff>=t))+...
...
(tau-t).*(CutOff>=tau));
Integral2=...
@(t,tau)2.*((lambda.*beta)./sigma.^2).*sigma.^2./(2.*lambda).*...
(1./lambda.*exp(-lambda.*CutOff).*(exp(lambda.*tau)-exp(lambda.*t)).*(CutOff<t)+...
...
((CutOff-t)+exp(-lambda.*CutOff)./(lambda).*...
(exp(lambda.*tau)-exp(lambda.*CutOff))).*((CutOff<=tau).*(CutOff>=t))+...
...
(tau-t).*(CutOff>=tau));
Integral3=@(t,tau)sigma.^2./2.*((lambda.*beta)./sigma.^2).^2.*(tau-t);
Integral=@(t,tau)Integral1(t,tau)+Integral2(t,tau)+Integral3(t,tau);
AddtoIntegralTerm1=@(t,tau)sigma.^2./(2.*lambda).*pitau(tau).^2.*(exp(2.*lambda.*tau)-exp(2.*lambda.*t))./2;
AddtoIntegralTerm2=@(t,tau)-pitau(tau).*vtau(tau);
Thanks for the help.