MATLAB How do I calculate the triple scalar product in Matlab?

Click For Summary
To compute the triple scalar product of three vectors a, b, and c in MATLAB, the correct approach is to use the dot product with the cross product. The expression should be written as dot(a, cross(b, c)). The confusion arose from using the matrix multiplication operator '*', which can lead to a 3x3 matrix output instead of a single scalar value. This happens when the vectors are not properly oriented as row or column vectors. If a, b, and c are all column vectors, the expression a.' * cross(b, c) will yield the correct scalar product. However, for mixed orientations or to avoid dimension issues, using dot(a, cross(b, c)) is the recommended method. Understanding the distinction between row and column vectors is crucial for correct implementation in MATLAB.
sara_87
Messages
748
Reaction score
0

Homework Statement



i have 3 vectors a,b,and c. on matlab, i have to find the triple scalar product:
b.(c x a)

Homework Equations





The Attempt at a Solution



i typed it in the script file as:
b'*cross(c,a)
but i got a 3x3 matrix...shouldn't the answer be one fixed value since when i calculate it myself, i get one number instead of a matrix.
did i type it wrong?
 
Physics news on Phys.org
Yes, the answer should be a number. I think your command '* may be incorrect. A quick google search tells me that the scalar triple product A\cdot (B\times C) should be entered like this dot(A,cross(B,C)).
 
cristo said:
Yes, the answer should be a number. I think your command '* may be incorrect. A quick google search tells me that the scalar triple product A\cdot (B\times C) should be entered like this dot(A,cross(B,C)).

Matlab will always "do the right thing" with dot(A,cross(B,C)) if A,B,C are three vectors.

The function cross(B,C) produces the same type of vector (column vector or row vector) as the inputs. If B and C are column vectors, cross(B,C) will be a 3x1 column vector. If A is also a column vector, then the notation A.'*cross(B,C) does produce the scalar triple product.

OTOH, if A, B, and C are row vectors (1x3), cross(B,C) is 1x3 and A.' is 3x1. Following the rules of matrix multiplication, the product of a 3x1 matrix with a 1x3 matrix is a 3x3 matrix. If you are using row vectors, the appropriate expression is A*cross(B,C).'

If A, B, C are of mixed row/column type (not a recommended practice), use dot(A,cross(B,C)).
 
uuummmm, a=i-2j+0k
b=2i+4j-k
c=3i+0j+2k
so do i use A*cross(B,C)
or dot(A,cross(B,C))
it's the second one right?
;)
 
dot(A,cross(B,C)) will always work. To use the matrix multiplication operators you need to ensure you have things dimensioned properly.

Do you know the difference between row vectors and column vectors?

This is a row vector in MATLAB (the vector is expressed in one row): a = [ 1,-2,0 ]
 
ah ok
thax v v much
 

Similar threads

  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 12 ·
Replies
12
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 9 ·
Replies
9
Views
5K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 5 ·
Replies
5
Views
3K