3
$\begingroup$

I want mathematica to recognize an expression. Thus I followed the ideas developed here and I wrote :

Solve[polynomelhs == 
  1/3 (1 + 2 J) (3 J + 3 J^2 + j4 + j4^2) (J + J^2 + 3 j4 + 3 j4^2) && 
  Cj4 == j4*(j4 + 1)  && CJ == J (J + 1) && DJ == 2*J + 1, 
  {polynomelhs}, {j4}, {J}]

I want that mathematica answers me polynomelhs->(1/3)*DJ*(3*CJ+Cj4)(CJ+3Cj4)

But it does'nt work.

I even cleared all my variables just before the solve but it doesn't work still.

Why isn't it working ?

The error is : Solve::bddom: Value {J} of the domain argument should be Complexes, Reals, Algebraics, Rationals, Integers, Primes, or Automatic.

I never needed to specify the domain argument before so why do I need to do it now ?

$\endgroup$
2
  • $\begingroup$ Your syntax for the Solve command is incorrect. I think your set of equations may have more than one solution. $\endgroup$
    – mikado
    Commented Jun 17, 2017 at 17:15
  • $\begingroup$ Your 3rd argument {J} is in the position where Solve expects a domain specification, which explains the error message you see. $\endgroup$
    – m_goldberg
    Commented Jun 17, 2017 at 17:39

1 Answer 1

2
$\begingroup$
eqns = polynomelhs == 
    1/3 (1 + 2 J) (3 J + 3 J^2 + j4 + j4^2) (J + J^2 + 3 j4 + 
       3 j4^2) && Cj4 == j4*(j4 + 1) && CJ == J (J + 1) && 
   DJ == 2*J + 1;

Use Reduce rather than Solve. Note that the variables to be eliminated must be in a single list. The fourth argument in your Solve was interpreted as an invalid domain specification.

sol = Reduce[eqns, polynomelhs, {j4, J}] // ToRules

(*  {CJ -> 1/4 (-1 + DJ^2), 
 polynomelhs -> 
  1/48 DJ (3 - 40 Cj4 + 48 Cj4^2 - 6 DJ^2 + 40 Cj4 DJ^2 + 3 DJ^4)}  *)

FullSimplify the expression for polynomelhs using the solution given for CJ as an assumption

FullSimplify[polynomelhs /. sol, Equal @@ sol[[1]]]

(*  1/3 (3 CJ + Cj4) (CJ + 3 Cj4) DJ  *)

EDIT: Solve will work if you specify that you also want to know the variable CJ

sol2 = Solve[eqns, {polynomelhs, CJ}, {j4, J}][[1]]

(*  {polynomelhs -> 
  1/48 DJ (3 - 40 Cj4 + 48 Cj4^2 - 6 DJ^2 + 40 Cj4 DJ^2 + 3 DJ^4), 
 CJ -> 1/4 (-1 + DJ^2)}  *)

FullSimplify[polynomelhs /. sol2, Equal @@ sol2[[2]]]

(*  1/3 (3 CJ + Cj4) (CJ + 3 Cj4) DJ  *)
$\endgroup$
2
  • $\begingroup$ Why is reduce better than solve in this case ? Thank you !! $\endgroup$
    – StarBucK
    Commented Jun 18, 2017 at 13:00
  • 2
    $\begingroup$ @StarBucK - The algorithms used by Reduce are more powerful and handle more cases than those used by Solve. When Solve didn't work with the input, I tried adding the option Method-> Reduce, and when that didn't work I switched to Reduce. "If at first you don't succeed, get a bigger hammer." $\endgroup$
    – Bob Hanlon
    Commented Jun 18, 2017 at 15:24

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.