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 comentario

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

Iniciar sesión para comentar.

 Respuesta aceptada

Roger Stafford
Roger Stafford el 10 de Oct. de 2013
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 comentario

Cristiano df
Cristiano df el 11 de Oct. de 2013
Thanks all for replies! I would not be able to find a solution without your help.
Many many thanks
Cristiano.

Iniciar sesión para comentar.

Más respuestas (1)

Image Analyst
Image Analyst el 10 de Oct. de 2013

0 votos

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.

Categorías

Más información sobre General Applications en Centro de ayuda y File Exchange.

Productos

Etiquetas

Preguntada:

el 10 de Oct. de 2013

Comentada:

el 11 de Oct. de 2013

Community Treasure Hunt

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

Start Hunting!

Translated by