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 Kommentar

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

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Roger Stafford
Roger Stafford am 10 Okt. 2013

0 Stimmen

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 Kommentar

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Image Analyst
Image Analyst am 10 Okt. 2013

0 Stimmen

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.

Kategorien

Mehr zu General Applications finden Sie in Hilfe-Center und File Exchange

Produkte

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by