# Possible error with dot product

4 views (last 30 days)
William Kett on 22 Sep 2021
Commented: William Kett on 4 Oct 2021
There appears to be an issue with the dot function which computes the dot product between 2 vectors. Either that, or I am using it incorrectly.
xa = -4.2162; % x-component of vector a
ya = -7.1335;% y-component of vector a
xb = -1.4941e-08; % x-component of vector b
yb = 1.7922e-08; % y-component of vector b
% dot product = a_i*b_i + a_j*b_j =|a|*|b|*cos(theta)
%% Get values for above formulae
dotprod1 = xa * xb + ya * yb
dotprod1 = -6.4852e-08
dotprod2 = -6.4852e-08
dotprod1 == dotprod2 % Should give 1
ans = logical
1
%% Using the dot function
% a = a_i + a_j
% b = b_i + b_j
dotprod3 = dot(xa+ya,xb+yb) % dot of full vectors a and b
dotprod3 = -3.3833e-08
dotprod1 == dotprod3
ans = logical
0
Why isn't dot producing the same value?

Geoff Hayes on 22 Sep 2021
William - from dot, this function returns the scalar dot product of the two input vectors. So in your case, the
dot(xa+ya,xb+yb)
is equivalent to
(xa + ya) * (xb + yb)
which is not the same as what you calculated previously as
dotprod1 = (xa * xb) + (ya * yb) % I added the brackets
Note also that your code and comment
dotprod1 == dotprod2 % Should give 1
is not necessarily true for floating point numbers. See Compare Floating-Point Numbers for details.
William Kett on 4 Oct 2021
Thank you for your response. I needed to use this for computing advection and was uncertain if dot worked.

R2021a

### Community Treasure Hunt

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

Start Hunting!