isequal functions is not working, what am I doing wrong?
20 views (last 30 days)
Show older comments
I have the following code, the result tells me it's false. What am I ding worng?
A = [(1/sqrt(3)), (-1/sqrt(2)), (1/sqrt(6)); (1/sqrt(3)), 0, (-2/sqrt(6));(1/sqrt(3)), (1/sqrt(2)), (1/sqrt(6))];
A_T = A';
A_1 = (A^-1);
tf = isequal(A_T,A_1)
0 Comments
Accepted Answer
Kirby Fears
on 2 Dec 2015
Edited: Kirby Fears
on 11 Dec 2015
In your Command Window, type this:
format long
A_T
A_1
You'll see elements of A_T and A_1 are essentially the same, but the last digit may not be exactly the same.
You're using two different methods on A that have the same theoretical answer (A' and A^-1). Both calculations are subject to machine error since they only track 64 bits of information. Since A' and A^-1 use different algebra to arrive at the same answer, they end up with slightly different 64-bit rounded answers.
You can check for equality up to a given threshold like this:
threshold = 1e-10; % set your level of accuracy for "equality"
tf = all(abs(A_T(:) - A_1(:))<=threshold);
More Answers (0)
See Also
Categories
Find more on Operators and Elementary Operations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!