isequal functions is not working, what am I doing wrong?

24 visualizaciones (últimos 30 días)
Sandy
Sandy el 2 de Dic. de 2015
Editada: Kirby Fears el 11 de Dic. de 2015
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)

Respuesta aceptada

Kirby Fears
Kirby Fears el 2 de Dic. de 2015
Editada: Kirby Fears el 11 de Dic. de 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);

Más respuestas (0)

Categorías

Más información sobre Operators and Elementary Operations en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by