Introduction to Trigonometric
=============================

Maxima has many trigonometric functions defined.  Not all trigonometric identities are programmed, but it is possible for the user to add many of them using the pattern matching capabilities of the system.  The trigonometric functions defined in Maxima are: acos, acosh, acot, acoth, acsc, acsch, asec, asech, asin, asinh, atan, atanh, cos, cosh, cot, coth, csc, csch, sec, sech, sin, sinh, tan, and tanh.  There are a number of commands especially for handling trigonometric functions, see trigexpand, trigreduce, and the switch trigsign.  Two share packages extend the simplification rules built into Maxima, ntrig and atrig1.  Do describe(COMMAND) for details.

Functions and Variables for Trigonometric
=========================================

 -- Option variable: %piargs
     Default value: true

     When %piargs is true, trigonometric functions are simplified to algebraic constants when the argument is an integer multiple of %pi, %pi/2, %pi/3, %pi/4, or %pi/6

     Maxima knows some identities which can be applied when %pi, etc., are multiplied by an integer variable (that is, a symbol declared to be integer).

     Examples:

          (%i1) %piargs : false;
          (%o1)                         false
          (%i2) [sin (%pi), sin (%pi/2), sin (%pi/3)];
                                          %pi       %pi
          (%o2)            [sin(%pi), sin(---), sin(---)]
                                           2         3
          (%i3) [sin (%pi/4), sin (%pi/5), sin (%pi/6)];
                                %pi       %pi       %pi
          (%o3)            [sin(---), sin(---), sin(---)]
                                 4         5         6
          (%i4) %piargs : true;
          (%o4)                         true
          (%i5) [sin (%pi), sin (%pi/2), sin (%pi/3)];
                                          sqrt(3)
          (%o5)                    [0, 1, -------]
                                             2
          (%i6) [sin (%pi/4), sin (%pi/5), sin (%pi/6)];
                                   1         %pi   1
          (%o6)                [-------, sin(---), -]
                                sqrt(2)       5    2
          (%i7) [cos (%pi/3), cos (10*%pi/3), tan (10*%pi/3), cos (sqrt(2)*%pi/3)];
                          1    1               sqrt(2) %pi
          (%o7)          [-, - -, sqrt(3), cos(-----------)]
                          2    2                    3

     Some identities are applied when %pi and %pi/2 are multiplied by an integer variable.

          (%i1) declare (n, integer, m, even);
          (%o1)                         done
          (%i2) [sin (%pi * n), cos (%pi * m), sin (%pi/2 * m), cos (%pi/2 * m)];
                                                m/2
          (%o2)                  [0, 1, 0, (- 1)   ]

 -- Option variable: %iargs
     Default value: true

     When %iargs is true, trigonometric functions are simplified to hyperbolic functions when the argument is apparently a multiple of the imaginary unit %i.

     Even when the argument is demonstrably real, the simplification is applied; Maxima considers only whether the argument is a literal multiple of %i.

     Examples:

          (%i1) %iargs : false;
          (%o1)                         false
          (%i2) [sin (%i * x), cos (%i * x), tan (%i * x)];
          (%o2)           [sin(%i x), cos(%i x), tan(%i x)]
          (%i3) %iargs : true;
          (%o3)                         true
          (%i4) [sin (%i * x), cos (%i * x), tan (%i * x)];
          (%o4)           [%i sinh(x), cosh(x), %i tanh(x)]

     Even when the argument is demonstrably real, the simplification is applied.

          (%i1) declare (x, imaginary);
          (%o1)                         done
          (%i2) [featurep (x, imaginary), featurep (x, real)];
          (%o2)                     [true, false]
          (%i3) sin (%i * x);
          (%o3)                      %i sinh(x)

 -- Function: acos (X)
     - Arc Cosine.

 -- Function: acosh (X)
     - Hyperbolic Arc Cosine.

 -- Function: acot (X)
     - Arc Cotangent.

 -- Function: acoth (X)
     - Hyperbolic Arc Cotangent.

 -- Function: acsc (X)
     - Arc Cosecant.

 -- Function: acsch (X)
     - Hyperbolic Arc Cosecant.

 -- Function: asec (X)
     - Arc Secant.

 -- Function: asech (X)
     - Hyperbolic Arc Secant.

 -- Function: asin (X)
     - Arc Sine.

 -- Function: asinh (X)
     - Hyperbolic Arc Sine.

 -- Function: atan (X)
     - Arc Tangent.

 -- Function: atan2 (Y, X)
     - yields the value of atan(Y/X) in the interval -%pi to %pi.

 -- Function: atanh (X)
     - Hyperbolic Arc Tangent.

 -- Package: atrig1
     The atrig1 package contains several additional simplification rules for inverse trigonometric functions.  Together with rules already known to Maxima, the following angles are fully implemented: 0, %pi/6, %pi/4, %pi/3, and %pi/2. Corresponding angles in the other three quadrants are also available. Do load(atrig1); to use them.

 -- Function: cos (X)
     - Cosine.

 -- Function: cosh (X)
     - Hyperbolic Cosine.

 -- Function: cot (X)
     - Cotangent.

 -- Function: coth (X)
     - Hyperbolic Cotangent.

 -- Function: csc (X)
     - Cosecant.

 -- Function: csch (X)
     - Hyperbolic Cosecant.

 -- Option variable: halfangles
     Default value: false

     When halfangles is true, half-angles are simplified away.

 -- Package: ntrig
     The ntrig package contains a set of simplification rules that are used to simplify trigonometric function whose arguments are of the form F(N %pi/10) where F is any of the functions sin, cos, tan, csc, sec and cot.

 -- Function: sec (X)
     - Secant.

 -- Function: sech (X)
     - Hyperbolic Secant.

 -- Function: sin (X)
     - Sine.

 -- Function: sinh (X)
     - Hyperbolic Sine.

 -- Function: tan (X)
     - Tangent.

 -- Function: tanh (X)
     - Hyperbolic Tangent.

 -- Function: trigexpand (EXPR)
     Expands trigonometric and hyperbolic functions of sums of angles and of multiple angles occurring in EXPR.  For best results, EXPR should be expanded.  To enhance user control of simplification, this function expands only one level at a time, expanding sums of angles or multiple angles.  To obtain full expansion into sines and cosines immediately, set the switch trigexpand: true.

     trigexpand is governed by the following global flags:

     trigexpand
          If true causes expansion of all expressions containing sin's and cos's occurring subsequently.

     halfangles
          If true causes half-angles to be simplified away.

     trigexpandplus
          Controls the "sum" rule for trigexpand, expansion of sums (e.g. sin(x + y)) will take place only if trigexpandplus is true.

     trigexpandtimes
          Controls the "product" rule for trigexpand, expansion of products (e.g. sin(2 x)) will take place only if trigexpandtimes is true.

     Examples:

          (%i1) x+sin(3*x)/sin(x),trigexpand=true,expand;
                                   2           2
          (%o1)               - sin (x) + 3 cos (x) + x
          (%i2) trigexpand(sin(10*x+y));
          (%o2)          cos(10 x) sin(y) + sin(10 x) cos(y)

 -- Option variable: trigexpandplus
     Default value: true

     trigexpandplus controls the "sum" rule for trigexpand.  Thus, when the trigexpand command is used or the trigexpand switch set to true, expansion of sums (e.g. sin(x+y)) will take place only if trigexpandplus is true.

 -- Option variable: trigexpandtimes
     Default value: true

     trigexpandtimes controls the "product" rule for trigexpand.  Thus, when the trigexpand command is used or the trigexpand switch set to true, expansion of products (e.g. sin(2*x)) will take place only if trigexpandtimes is true.

 -- Option variable: triginverses
     Default value: all

     triginverses controls the simplification of the composition of trigonometric and hyperbolic functions with their inverse functions.

     If all, both e.g. atan(tan(X)) and tan(atan(X)) simplify to X.

     If true, the ARCFUN(FUN(X)) simplification is turned off.

     If false, both the ARCFUN(FUN(X)) and FUN(ARCFUN(X)) simplifications are turned off.

 -- Function: trigreduce (EXPR, X)
 -- Function: trigreduce (EXPR)
     Combines products and powers of trigonometric and hyperbolic sin's and cos's of X into those of multiples of X. It also tries to eliminate these functions when they occur in denominators.  If X is omitted then all variables in EXPR are used.

     See also poissimp.

          (%i1) trigreduce(-sin(x)^2+3*cos(x)^2+x);
                         cos(2 x)      cos(2 x)   1        1
          (%o1)          -------- + 3 (-------- + -) + x - -
                            2             2       2        2

     The trigonometric simplification routines will use declared information in some simple cases.  Declarations about variables are used as follows, e.g.

          (%i1) declare(j, integer, e, even, o, odd)$
          (%i2) sin(x + (e + 1/2)*%pi);
          (%o2)                        cos(x)
          (%i3) sin(x + (o + 1/2)*%pi);
          (%o3)                       - cos(x)

 -- Option variable: trigsign
     Default value: true

     When trigsign is true, it permits simplification of negative arguments to trigonometric functions. E.g., sin(-x) will become -sin(x) only if trigsign is true.

 -- Function: trigsimp (EXPR)
     Employs the identities sin(x)^2 + cos(x)^2 = 1 and cosh(x)^2 - sinh(x)^2 = 1 to simplify expressions containing tan, sec, etc., to sin, cos, sinh, cosh.

     trigreduce, ratsimp, and radcan may be able to further simplify the result.

     demo ("trgsmp.dem") displays some examples of trigsimp.

 -- Function: trigrat (EXPR)
     Gives a canonical simplifyed quasilinear form of a trigonometrical expression; EXPR is a rational fraction of several sin, cos or tan, the arguments of them are linear forms in some variables (or kernels) and %pi/N (N integer) with integer coefficients. The result is a simplified fraction with numerator and denominator linear in sin and cos. Thus trigrat linearize always when it is possible.

          (%i1) trigrat(sin(3*a)/sin(a+%pi/3));
          (%o1)            sqrt(3) sin(2 a) + cos(2 a) - 1

     The following example is taken from Davenport, Siret, and Tournier, Calcul Formel, Masson (or in English, Addison-Wesley), section 1.5.5, Morley theorem.

          (%i1) c: %pi/3 - a - b;
                                              %pi
          (%o1)                     - b - a + ---
                                               3
          (%i2) bc: sin(a)*sin(3*c)/sin(a+b);
                                sin(a) sin(3 b + 3 a)
          (%o2)                 ---------------------
                                     sin(b + a)
          (%i3) ba: bc, c=a, a=c$
          (%i4) ac2: ba^2 + bc^2 - 2*bc*ba*cos(b);
                   2       2
                sin (a) sin (3 b + 3 a)
          (%o4) -----------------------
                         2
                      sin (b + a)

                                                  %pi
             2 sin(a) sin(3 a) cos(b) sin(b + a - ---) sin(3 b + 3 a)
                                                   3
           - --------------------------------------------------------
                                     %pi
                             sin(a - ---) sin(b + a)
                                      3

                2         2         %pi
             sin (3 a) sin (b + a - ---)
                                     3
           + ---------------------------
                       2     %pi
                    sin (a - ---)
                              3
          (%i5) trigrat (ac2);
          (%o5) - (sqrt(3) sin(4 b + 4 a) - cos(4 b + 4 a)

           - 2 sqrt(3) sin(4 b + 2 a) + 2 cos(4 b + 2 a)

           - 2 sqrt(3) sin(2 b + 4 a) + 2 cos(2 b + 4 a)

           + 4 sqrt(3) sin(2 b + 2 a) - 8 cos(2 b + 2 a) - 4 cos(2 b - 2 a)

           + sqrt(3) sin(4 b) - cos(4 b) - 2 sqrt(3) sin(2 b) + 10 cos(2 b)

           + sqrt(3) sin(4 a) - cos(4 a) - 2 sqrt(3) sin(2 a) + 10 cos(2 a)

           - 9)/4