How to Integrate Lognormal PDF multiplied by a function.

Hi,
I am trying to ∫ D(V)*F(V)dV eq1
min=_(0.8e-26) and max=(1.35e-26)
D(t,V)=2*Ps*(1-exp(-(t)./(Vo*exp((Ps*10000000-Wb)*V/(Kb*300))))) and F(V)= Lognormal PDF=(1./(V.*sigma.*sqrt(2.*pi)).*exp(-log(V)-mu).^2/(2.*sigma^2)).*V
Find below, the code I wrote to compute the integral of eq1:
Dp=@(V)(1./(V.*sigma.*sqrt(2.*pi)).*exp(-log(V)-mu).^2/(2.*sigma^2)).*V.*2*Ps*(1-exp(-(t)./(Vo*exp((Ps*10000000-Wb)*V/(Kb*300)))))
Dp =
function_handle with value:
@(V)(1./(V.*sigma.*sqrt(2.*pi)).*exp(-log(V)-mu).^2/(2.*sigma^2)).*V.*2*Ps*(1-exp(-(t)./(Vo*exp((Ps*10000000-Wb)*V/(Kb*300)))))
>> integral(Dp,0.8e-26,1.35e-26)
Error message I got were:
Matrix dimensions must agree.
Error in
@(V)(1./(V.*sigma.*sqrt(2.*pi)).*exp(-log(V)-mu).^2/(2.*sigma^2)).*V.*2*Ps*(1-exp(-(t)./(Vo*exp((Ps*10000000-Wb)*V/(Kb*300)))))
Error in integralCalc/iterateScalarValued (line 314)
fx = FUN(t);
Error in integralCalc/vadapt (line 132)
[q,errbnd] = iterateScalarValued(u,tinterval,pathlen);
Error in integralCalc (line 75)
[q,errbnd] = vadapt(@AtoBInvTransform,interval);
Error in integral (line 88)
Q = integralCalc(fun,a,b,opstruct);
Please can anyone kindly assist me or advice me?
Thank you

4 Comments

Would you be able to provide all of your code, or at least the values you are using for all variables (sigma, mu, Ps, t, Vo, Wb, Kb)?
Yes, and place you code in a proper code block.
Thanks Tommy, here we go:
Kb=1.38e-23;Ps=0.74;Wb=1.44e-19;Vo=1.00e-13:V=1.00e-26: sigma=0.05:Mu=0;

Sign in to comment.

 Accepted Answer

The error (Matrix dimensions must agree) occurs because your t is an array of length 3503185 and the V passed into Dp() by integral() is an array of length 150. Therefore, the following portion of Dp() throws the error:
>> -(t)./(Vo*exp((Ps*10000000-Wb)*V/(Kb*300)))
Matrix dimensions must agree.
You can find the integral of Dp() over your range of V by specifying a scalar value for t. If you want to see how the integral varies over a range of log(t), then you can evaluate the integral at each value of t independently and combine the results:
Kb=1.38e-23;Ps=0.74;Wb=1.44e-19;Vo=1.00e-13;V=1.00e-26;sigma=0.05;mu=0;
t=logspace(log10(0.00000226),log10(55),5000);
Dp=@(V,t)(1./(V.*sigma.*sqrt(2.*pi)).*exp(-log(V)-mu).^2/(2.*sigma^2)).*V.*2*Ps.*(1-exp(-(t)./(Vo*exp((Ps*10000000-Wb)*V/(Kb*300)))));
y = arrayfun(@(t) integral(@(V) Dp(V, t), 0.8e-26, 1.35e-26), t);
plot(log(t), y);
I decreased the length of t considerably because it would take a very long time to evaluate the integral 3503185 different times, and I changed t from a linearly-spaced vector to one spaced logarithmically.

2 Comments

Thanks Tommy, I will run the code and let you the outcome. I am immensely grateful for your feedback!!!
The code worked fine and generated a graph for further analysis. I most grateful.

Sign in to comment.

More Answers (1)

Hi Tommy,
t=0.00000226:0.0000157:55;x=log(t);
I was hoping to plot the integral Dp as a function of log(t). Hence I used the above parameter.

Categories

Find more on Mathematics in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!