how many number of values when added becomes equal to B(Known value)
1 次查看(过去 30 天)
显示 更早的评论
I have to find the X value for which \sum_(i=1)^X (i * a_i ) >= B
or ( 1*a_1 + 2*a_2 + --- + X*a_x >= B ) where a_i & B are known.
For finding the X value; is there any explicit formula? If anyone knows, please answer.
Thank you very much, kalpana
0 个评论
采纳的回答
Roger Stafford
2014-7-28
Assume 'a' is a row vector.
x = 1:size(a,2);
X = x(cumsum(x.*a)>=B);
5 个评论
Roger Stafford
2014-7-28
I've already told you. The first X that satisfies your inequality is the first element in my X. It is of course X(1).
更多回答(1 个)
ES
2014-7-28
Immediate Response would be, you can run a loop and sum it up and check if the sum is greater than or equal to B at every iteration and break out of loop when it is satisfied.
A more measured approach will be, to use summation by parts. For example if length of a_i is 100, you could first check if summation(a_i*X) for X=1:50. If B is smaller, then you can run the summation for X=1:75. If B is greater, then you can run for X=1:25 and proceed so on.. But for this to work, a_i should be monotonically increasing.
Analysis of a_i (if it is a series or so) could also be useful.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!