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

采纳的回答

Roger Stafford
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
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
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.
  1 个评论
kalpana
kalpana 2014-7-28
Thank you for answering. Your suggestion is useful.
Can we have some explicit formula for this if a_i's random numbers.--kalpana

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Mathematics 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by