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

回答 (1 件)

Ameer Hamza
Ameer Hamza 2020 年 11 月 29 日
編集済み: Ameer Hamza 2020 年 11 月 29 日

1 投票

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 件のコメント

Rahim Rahim
Rahim Rahim 2020 年 11 月 29 日
編集済み: Rahim Rahim 2020 年 11 月 29 日
@Walter Roberson thank you for your comment
Any part should I see ?
Walter Roberson
Walter Roberson 2020 年 11 月 29 日
All of the section on the topic.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeMathematics and Optimization についてさらに検索

製品

リリース

R2018a

質問済み:

2020 年 11 月 29 日

コメント済み:

2020 年 11 月 29 日

Community Treasure Hunt

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

Start Hunting!

Translated by