x = [1 1 -1];
p = [-1 -1 1];
angle = acos(dot(x,p)/(norm(x) * norm(p)));
bir karmaşık sayı olduğu angle = 3.141592653589793 - 0.000000021073424i
gösterir.
Ama hepimiz x
ve p
nokta ürünü -3 olduğunu biliyoruz ve x
ve p
normlarına ürünü, yani angle = acos(-3/3)
3, bu nedenle açı tam olarak pi, 3.14159 olmalıdır. MatLab neden karmaşık bir sayı veriyor ve sonuca gerçek bir sayıyı nasıl verebilirim?
Ben MATLAB yakın değil' ama ara değer nedeniyle kayan noktasına çok yakın ama dışarıda [-1,1] aralığında aslında -1 değildir şey olduğunu kontrol edebilirsiniz: Daha iyi sayısal probabillities için bu şekilde yeniden yazın hatalar? – Amro
Burada ilgili sayfa: http://www.mathworks.com/matlabcentral/answers/101590-how-can-i-determine-the-angle-between-two-vectors-in-matlab (özellikle arasındaki karşılaştırmaya bakın "acos" ve "atan2" doğruluğu). – Amro