Exhaustion method with a condition
Ältere Kommentare anzeigen
Dear :
I have a set of weight number [weight1 weight2 weight3 weight4],I want to use a exhaustion method with a condition find all of them satisfied the condition:
Both of their value are 0:0.01:0.28 condition is 0.5*(weight1^2+weight2^2+weight3^2+weight4^2)==0.125 (or (weight1^2+weight2^2+weight3^2+weight4^2)==0.25 )
Following is my code :
close all clc
%%wieght constraining
cont=0;
weight=zeros(1,4);
for weight1=0:0.01:0.28
for weight2=0:0.01:0.28
for weight3=0:0.01:0.28
for weight4=0:0.01:0.28
check =(weight1^2+weight2^2+weight3^2+weight4^2);
if check == 0.25
cont= cont+1;
weight(cont,:)=[weight1,weight2,weight3,weight4];
end
end
end
end
end
But the value only show : [0.16 0.28 0.28 0.26] [0.25 0.25 0.25 0.25] and [0.28 0.16 0.28 0.26] ,but it should have more value for sure:[0.16 0.26 0.28 0.28] [0.16 0.28 0.26 0.28]......
What's wrong is my code?or could someone help me,maybe I ignored some parts.
Thanks a lot!!
2 Kommentare
John D'Errico
am 20 Mai 2018
Bearbeitet: John D'Errico
am 20 Mai 2018
NEVER test for exact equality between floating point numbers. Always use a tolerance on something like this.
Double precision numbers use a BINARY mantissa to store the number, but values like 0.01 are not exactly representable in binary.
Zoe Lin
am 20 Mai 2018
Akzeptierte Antwort
Weitere Antworten (0)
Kategorien
Mehr zu Detection finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!