Question about constraints in optimization problems

1 visualizzazione (ultimi 30 giorni)
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
  3 Commenti
Rahim Rahim
Rahim Rahim il 29 Nov 2020
Modificato: Rahim Rahim il 29 Nov 2020
@Walter Roberson thank you for your comment
Any part should I see ?

Accedi per commentare.

Categorie

Scopri di più su Quadratic Programming and Cone Programming in Help Center e File Exchange

Prodotti


Release

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by