Effacer les filtres
Effacer les filtres

Question about constraints in optimization problems

1 vue (au cours des 30 derniers jours)
Rahim Rahim
Rahim Rahim le 29 Nov 2020
Commenté : Walter Roberson le 29 Nov 2020
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

Réponses (1)

Ameer Hamza
Ameer Hamza le 29 Nov 2020
Modifié(e) : Ameer Hamza le 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 commentaires
Rahim Rahim
Rahim Rahim le 29 Nov 2020
Modifié(e) : Rahim Rahim le 29 Nov 2020
@Walter Roberson thank you for your comment
Any part should I see ?
Walter Roberson
Walter Roberson le 29 Nov 2020
All of the section on the topic.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Nonlinear Optimization dans Help Center et File Exchange

Produits


Version

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by