I am trying to do a summation with repeated calculations in the "probability" variable, which cost a lot of time.
However, in each sum, the "probability" can be calculated from the last sum.I want to know if there is a way for sum to use the previous value? Or is there any advice on speeding up the Summation?
*Notes
- I have tried
AssumeplusFullSimplifyon "probability",but it didn't simplify it. - My final goal is to achieve n·value=400000,A·value=2000,L·value=6000.
(*Settings and Define distribution*)
ClearAll[n`value, A`value, L`value, r`value, mu, sigma, Fd, \
Ev`i`in`N, pauc`j, effi1, effi2, effi3, pro, n, L, x]
mu = 96228/10000;
sigma = 2129/10000;
nvalue = 1000; Avalue = 200;
L`value = 750;
Fd = LogNormalDistribution[mu, sigma];
(Basic Calculation)
p = CDF[Fd, 3579899822703125/137438953472];
Eviin`N[n_, i_, v_] :=
Assuming[v > 0,
NIntegrate[
v(n - 1)Binomial[n - 1, i - 1]*
CDF[Fd, v]^(n - i)(1 - CDF[Fd, v])^(i - 1)PDF[Fd, v], {v, 0,
100000}, WorkingPrecision -> 50, AccuracyGoal -> 10,
MinRecursion -> 5, MaxRecursion -> 10]];
probability[n_, j_] :=
Sum[Binomial[n, i]p^(n - i)(1 - p)^i*L`value/(n - i), {i, 1, j}];
(Target Sum)
efficency =
Sum[EviinN[nvalue, j, v]*probability[n`value, j - 1], {j,
Avalue + 1, nvalue - L`value}] // AbsoluteTiming
My result is({31.5802, 664830.63374088788081035825330413985010418282188882})
probabilityandEv``i``in``Nhelps a bit. You can also Work with finite precision numbers instead of infinite precision. Eachprobabilityresult is a very complicated expression, and applyingNalso helps a bit. – lericr Oct 26 '23 at 04:35