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$ – Ben Dec 19 '17 at 19:30
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$ – Ben Dec 19 '17 at 19:35
  • $\begingroup$ Amazing! thank you again@Carl Woll $\endgroup$ – Ben Dec 19 '17 at 19:42
  • $\begingroup$ good job! @Carl Woll $\endgroup$ – Ben Dec 20 '17 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$ – Ben Dec 20 '17 at 1:49
  • $\begingroup$ @Ben, my pleasure. $\endgroup$ – kglr Dec 20 '17 at 1:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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