2
$\begingroup$

I have the following expression:

Vd = 
  {{
    -11.0001 eth^2 + 19.4214 eth ex + 10. ex^2 - 0.3162 ey + 
    (0.3162 - 0.999919 ey) ey Cos[eth] + 
    (-1. eth - 0.6982 ex + 3.1623 eth ey + 2.20792 ex ey) Sin[eth]
   }}

I would like to find the domain of definition of ex ey eth where Vd < 0, so I tried using the reduce function of mathematica as follows.

Reduce[{Vd < 0, 0 <= eth < 2 Pi}, {ex, ey, eth}, Reals]

But what ends up happening is Mathematica running, longer than I can bear, with no result.

When I use the theorem of small angles and replace Cos[eth] with 1 and Sin[eth] with eth, i.e.,

Vd =
  {{
    -11.0001 eth^2 + 19.4214 eth ex + 10. ex^2 - 0.3162 ey + 
    (0.3162 - 0.999919 ey) ey + 
    (-1. eth - 0.6982 ex + 3.1623 eth ey + 2.20792 ex ey) eth
  }}

and evaluate

Reduce[{Vd < 0, 0 <= eth < 0.1}, {ex, ey, eth}, Reals] 

I get results, so I'm certain that the issue is in the Sin and Cos in the original expression.

How can I make it work?

$\endgroup$
3
  • $\begingroup$ Is it deliberate that eth is both inside and outside a trigonometric function? That would definitely be troublesome for Reduce[]. $\endgroup$ Mar 24, 2018 at 4:03
  • $\begingroup$ Yes that is deliberate. Is there any alternative to the reduce function i could use for this situation? $\endgroup$ Mar 24, 2018 at 4:06
  • 1
    $\begingroup$ Any method will likely attempt to solve a transcendental equation at some point, and your eth variable will be the first source of complication. I don't have much hope for you getting a symbolic solution. $\endgroup$ Mar 24, 2018 at 4:08

1 Answer 1

2
$\begingroup$

Have a look, how compicated the region Vd<0is.

Vd[ex_, ey_, eth_] = 
   Rationalize[-11.0001 eth^2 + 19.4214 eth ex + 10. ex^2 - 
   0.3162 ey + (0.3162 - 0.999919 ey) ey Cos[
  eth] + (-1. eth - 0.6982 ex + 3.1623 eth ey + 
   2.20792 ex ey) Sin[eth], 0];

RegionPlot3D[
    Vd[ex, ey, eth] < 0, {ex, 0, 10}, {ey, 0, 40}, {eth, 0, 8}]

enter image description here

There will be no change to get simple constraints with Reduce.

Reducing at certain eth gives results, but even very complicated.

red[eth_] := 
   Reduce[Vd[ex, ey, eth] < 0, {ex, ey}, Reals] // PowerExpand // 
     FullSimplify

red[0]

(*   ey < -1000 Sqrt[10/999919] ex || ey > 1000 Sqrt[10/999919] ex   *)

red[1]

Answer is very long.

$\endgroup$

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.