# expression has trig component or not?

Is there any way in Sage to find out whether an expression has any trigonometric component (e.g. sin, cos,... ) or not?

expression has trig component or not?

add a comment

3

There's probably an Expression walker lurking somewhere which could do what the first function does automatically but I don't know where it lives. So instead (with the usual untested warning):

```
def walk_for_operators(someexpr):
tor = someexpr.operator()
if tor: yield tor
for oper in someexpr.operands():
for subtor in walk_for_operators(oper):
yield subtor
trig_ops = set([sin, cos, tan, sec, csc, cot,
sinh, cosh, tanh, sech, csch, coth,
asin, acos, atan, asec, acsc, acot,
asinh, acosh, atanh, asech, acsch, acoth,
atan2])
def has_trig_fn(someexpr):
return any(op in trig_ops for op in walk_for_operators(someexpr))
```

```
sage: x,y = var("x, y")
sage: list(walk_for_operators(x^2))
[<built-in function pow>]
sage: list(walk_for_operators(x^2+4))
[<built-in function add>, <built-in function pow>]
sage: list(walk_for_operators(x^2+4+sin(x)^2))
[<built-in function add>, <built-in function pow>, <built-in function pow>, sin]
sage: list(walk_for_operators((x^2+4+exp(x)^2)/(1-sin(y))))
[<built-in function mul>, <built-in function pow>, <built-in function add>,
sin, <built-in function add>,<built-in function pow>, exp, <built-in function mul>]
sage: # hmm. that's strange, no sub and div?
sage: list(walk_for_operators(x/y))
[<built-in function mul>, <built-in function pow>]
sage: (x/y).operands()
[x, 1/y]
sage: (x/y).operator()
<built-in function mul>
sage: (x/y).operands()[1]
1/y
sage: ((x/y).operands()[1]).operator()
<built-in function pow>
sage: # so it seems the division is processed to a pow (and sub to add with negative arg). okay.
sage:
sage: has_trig_fn(x^2+4)
False
sage: has_trig_fn(x^2+4+sin(x)^2)
True
sage: has_trig_fn((x^2+4+exp(x)^2)/(1-pow(atan2(x,y), 5)))
True
```

Asked: **
2011-02-10 07:49:09 -0500
**

Seen: **201 times**

Last updated: **Feb 10 '11**

Convert exponential form to hyperbolic functions

Trigonometric simplification for distance on a sphere

Solving large trigonometric fucntions

Solve equation 1/3*x + sin(2*x)==1

Solving trigonometric functions

Sage does not simplify trigonometric expresion

How to solve polynomial equation system

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.