Cross Product and Vector Multiplication

If i have the following 4 vectors:
D=Ax(B*C)
How would I solve for C?
Try and make this a tab bit more clear. I have A is a 1x3 matrix, B is a 3x3 matrix C is a 3x1 matrix and D is a 1x3 matrix. I am trying to solve for C. The problem is stated as A cross the product B*C equals D.

4 Comments

What are your known parameters ?
Can you please verify that in MATLAB syntax,
D = cross(A,B*C)
?
Its a stiffness and force equation for displacement. So D is reaction force of [Fx,Fy,Fz]. A is the position vector [x;y;d]. B is the transformation to global stiffness [3x3 DCM] and C is the displacement [x.y.z]
>> A=[1 2 3]; B=[1 2 3; 4 5 6; 7 8 9]; C=[4; 5; 6];
>> D=cross(A,B*C)
D =
13 -26 13

Sign in to comment.

 Accepted Answer

C = [ cross(A',B(:,1)) , cross(A',B(:,2)) , cross(A',B(:,3)) ]\(D');

4 Comments

When attempting to use your code I receive:
C =
NaN
NaN
NaN
I was overly hasty. It is true that if
D=cross(A,B*C)
then
[cross(A',B(:,1)),cross(A',B(:,2)),cross(A',B(:,3))] * C = D'
However this matrix
[cross(A',B(:,1)),cross(A',B(:,2)),cross(A',B(:,3))]
is inherently singular, that is, its determinant is zero. In other words the equations you can obtain from
D=cross(A,B*C)
have infinitely many solutions for C. You cannot determine C uniquely from A, B, and D.
To visualize this better, consider this equation
Z = cross(X,Y)
where X and Y are vectors. If you are then given Z and X, there will obviously be infinitely many Y vectors that will satisfy the above equation. Any Y which is orthogonal to Z and has the appropriate component orthogonal to the X direction will be a solution. The same applies to your situation. You cannot determine C from A, B, and D.
That makes sense. I went through the properties of cross product and multiplication and arrived at your equation but since it is singular then I cannot obtain C. Dang. Thank you for your time and explanation.
There is a way to obtain a unique value for C that satisfies your equation. Let C be given by:
C = B\(cross(D',A')/dot(A,A));
This is the unique C such that
D' = cross(A',B*C)
and
dot(B*C,A') = 0
That is, such that B*C is orthogonal to A'. It assumes that D is orthogonal to A and that B is non-singular.

Sign in to comment.

More Answers (3)

  • Find the Matlab command to carry out the cross product of two vectors b and c and try it out on two vectors.
if n corss n = ny
how to write cross in symbol notation form in matlab
circle statement

1 Comment

Do you mean n times n? If so use the * operator.
But please do not put your own files in any subdirectory under the matlabroot directory!

Sign in to comment.

Categories

Community Treasure Hunt

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

Start Hunting!