sum 100 from given values and limits

Hi all, I'd like to find values that sum 100 between these 4 values and their limits:
low high
31.5 33.4
15.3 16.8
47.2 49.1
3.0 3.7
For example a solution could be:
32.0
15.3
49.0
3.7
-------
100
Please help me ;)
Cristiano.

1 Commento

Matt Kindig
Matt Kindig il 10 Ott 2013
Modificato: Matt Kindig il 10 Ott 2013
There are an infinite number of solutions to this problem. Do you just need one that works (i.e., a feasible solution)?

Accedi per commentare.

 Risposta accettata

I propose the following unique "canonical" solution. Let 'low' and 'high' be vectors of your lower and upper range limits respectively and let s be the desired sum.
t = (s-sum(low))/(sum(high)-sum(low));
if t<0|t>1
error('No solution is possible')
else
v = low+t*(high-low);
end
If a solution is possible, elements of the vector 'v' will lie in the proper range and sum to the value s (except for very small round-off errors, of course.)

1 Commento

Thanks all for replies! I would not be able to find a solution without your help.
Many many thanks
Cristiano.

Accedi per commentare.

Più risposte (1)

Image Analyst
Image Analyst il 10 Ott 2013

0 voti

Do you have an array that you're checking to see if its elements are in any one of those 4 ranges? Probably none of them will sum exactly to 100. See the FAQ: http://matlab.wikia.com/wiki/FAQ#Why_is_0.3_-_0.2_-_0.1_.28or_similar.29_not_equal_to_zero.3F YOu can either go greater than 100 or within some tolerance of 100 like the FAQ shows.

Categorie

Scopri di più su General Applications in Centro assistenza e File Exchange

Prodotti

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by