Question about constraints in optimization problems

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

Risposte (1)

Ameer Hamza
Ameer Hamza il 29 Nov 2020
Modificato: Ameer Hamza il 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

Categorie

Scopri di più su Mathematics and Optimization in Centro assistenza e File Exchange

Prodotti

Release

R2018a

Richiesto:

il 29 Nov 2020

Commentato:

il 29 Nov 2020

Community Treasure Hunt

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

Start Hunting!

Translated by