Question about constraints in optimization problems

2 views (last 30 days)
I have the following victor:
A=[ 0.1 0.1 0.3 0.2 0.3]
The sum of this vector is 1, but when I try the following code:
Test = (sum(A(:)) ==1)
If ( Test == 1 )
"True"
Else
"False"
The results is always FALSE.
What is the problem

Answers (1)

Ameer Hamza
Ameer Hamza on 29 Nov 2020
Edited: Ameer Hamza on 29 Nov 2020
This is due to the finite precision of floating-point numbers. Calculations on floating points numbers can accumulate errors, so the value is not exactly equal to one. You need to allow a bit of tolerance in comparing floating-point values. For example
Test = (sum(A(:)) ==1)
if ( abs(Test-1) < 1e-6 )
"True"
else
"False"
end
  3 Comments
Rahim Rahim
Rahim Rahim on 29 Nov 2020
Edited: Rahim Rahim on 29 Nov 2020
@Walter Roberson thank you for your comment
Any part should I see ?

Sign in to comment.

Products


Release

R2018a

Community Treasure Hunt

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

Start Hunting!