Filter löschen
Filter löschen

Question about constraints in optimization problems

1 Ansicht (letzte 30 Tage)
Rahim Rahim
Rahim Rahim am 29 Nov. 2020
Kommentiert: Walter Roberson am 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

Antworten (1)

Ameer Hamza
Ameer Hamza am 29 Nov. 2020
Bearbeitet: Ameer Hamza am 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 Kommentare
Rahim Rahim
Rahim Rahim am 29 Nov. 2020
Bearbeitet: Rahim Rahim am 29 Nov. 2020
@Walter Roberson thank you for your comment
Any part should I see ?
Walter Roberson
Walter Roberson am 29 Nov. 2020
All of the section on the topic.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Nonlinear Optimization finden Sie in Help Center und File Exchange

Produkte


Version

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by