2
$\begingroup$

Assume input as follows

in[1]=w = {a, b, c}; v = {d, e, g};
jMatrix = {{J1, 0, 0}, {0, J2, 0}, {0, 0, J3}};
ans= 1/2*jMatrix.Cross[v, w] + 1/2*(Cross[v, jMatrix.w] + Cross[w,jMatrix.v]) + jMatrix.Cross[w, v];

we have output[1]

out[1]={-(1/2) (c e - b g) (j1 + j2 + j3), 1/2 (c d - a g) (j1 + j2 + j3), -(1/2) (b d - a e) (j1 + j2 + j3)}

Can i simplify the out[1] to vector crossproduct or dotproduct form(in other words, more concise form.)?

ans1 // Simplify seems don't work.

Thanks @Carl Woll, TensorReduce works well, but it failed when i set jMatrix as $I_3$.

Clear["Global`*"]
ans1 = 1/2*jMatrix.Cross[v, w] + 
   1/2*(Cross[v, jMatrix.w] + Cross[w, jMatrix.v]) + 
   jMatrix.Cross[w, v];
TensorReduce[ans1, 
 Assumptions -> (v | w) \[Element] Vectors[3] && 
   jMatrix \[Element] IdentityMatrix[3]]//TeXForm

the result output not concise.

$\endgroup$
1
  • $\begingroup$ If mma can specify the form, and then to find the coefficient, if expression don't match the hypothetical form, only add some residual part.... $\endgroup$
    – lumw
    Commented Dec 19, 2017 at 19:30

2 Answers 2

3
$\begingroup$

If you avoid using explicit vectors and matrices, you could use TensorReduce. Here is your expression:

ans=1/2*jMatrix.Cross[v,w]+1/2*(Cross[v,jMatrix.w]+Cross[w,jMatrix.v])+jMatrix.Cross[w,v];
ans //TeXForm

$\frac{1}{2} (v\times (\operatorname{jMatrix}.w)+w\times (\operatorname{jMatrix}.v))+\frac{\operatorname{jMatrix}.v\times w}{2}+\operatorname{jMatrix}.w\times v$

And here is the result of TensorReduce:

TensorReduce[
    ans,
    Assumptions -> (v|w) ∈ Vectors[3] && jMatrix ∈ Matrices[{3,3}]
] //TeXForm

$\frac{1}{2} v\times (\operatorname{jMatrix}.w)+\frac{1}{2} w\times (\operatorname{jMatrix}.v)-\frac{\operatorname{jMatrix}.v\times w}{2}$

Slightly simpler than your original expression.

Addendum

The OP asked about setting jMatrix to IdentityMatrix[3]. For this you could use my TensorSimplify paclet. Install the paclet with:

PacletInstall[
    "TensorSimplify", 
    "Site" -> "http://raw.githubusercontent.com/carlwoll/TensorSimplify/master"
]

Once installed, you can load the package with:

<<TensorSimplify`

Then, the following does the simplification you want:

$Assumptions = (v|w) ∈ Vectors[3];

TensorSimplify[ans1 /. jMatrix -> Inactive[IdentityMatrix][3]] //TeXForm

$\frac{w\times v}{2}$

$\endgroup$
3
  • $\begingroup$ Let me try, if i find some technology, i will update this question, thank you for your patience.@Carl Woll $\endgroup$
    – lumw
    Commented Dec 19, 2017 at 19:35
  • $\begingroup$ Amazing! thank you again@Carl Woll $\endgroup$
    – lumw
    Commented Dec 19, 2017 at 19:42
  • $\begingroup$ good job! @Carl Woll $\endgroup$
    – lumw
    Commented Dec 20, 2017 at 1:48
2
$\begingroup$

Also

ClearAll[w, v, jMatrix]
Inactivate[1/2  jMatrix . Cross[v, w] + 1/2 (Cross[v, jMatrix . w] + 
 Cross[w, jMatrix . v]) + jMatrix . Cross[w, v], Cross|Dot]

$\frac {1} {2} (v\times (\text {jMatrix}.w) + w \times (\text {jMatrix}.v)) + \frac {\text {jMatrix}.v\times w} {2} + \text {jMatrix}.w\times v$

$\endgroup$
2
  • $\begingroup$ it can works, thank you! @kglr $\endgroup$
    – lumw
    Commented Dec 20, 2017 at 1:49
  • $\begingroup$ @Ben, my pleasure. $\endgroup$
    – kglr
    Commented Dec 20, 2017 at 1:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.