Use %%PRETTY-FNAME in more quadpack error messages
[maxima.git] / tests / wester_problems / test_trigonometry.mac
blobaccaa563e218ece64a8fd836229a54fa6a9fc9ab
1 /* Original version of this file copyright 1999 by Michael Wester,
2  * and retrieved from http://www.math.unm.edu/~wester/demos/Trigonometry/problems.macsyma
3  * circa 2006-10-23.
4  *
5  * Released under the terms of the GNU General Public License, version 2,
6  * per message dated 2007-06-03 from Michael Wester to Robert Dodier
7  * (contained in the file wester-gpl-permission-message.txt).
8  *
9  * See: "A Critique of the Mathematical Abilities of CA Systems"
10  * by Michael Wester, pp 25--60 in
11  * "Computer Algebra Systems: A Practical Guide", edited by Michael J. Wester
12  * and published by John Wiley and Sons, Chichester, United Kingdom, 1999.
13  */
14 /* ----------[ M a c s y m a ]---------- */
15 /* ---------- Initialization ---------- */
16 showtime: all$
17 prederror: false$
18 /* ---------- Trigonometry ---------- */
19 /* => - [(sqrt(5) + 1) sqrt(2)]/[(sqrt(5) - 1) sqrt(sqrt(5) + 5)]
20       = - sqrt[1 + 2/sqrt(5)]
21    From B. F. Caviness, Robert P. Gilbert, Wolfram Koepf, Roman Shtokhamer and
22    David W. Wood, _An Introduction to Applied Symbolic Computation using
23    MACSYMA_, University of Delaware, draft of December 14, 1993, section 2.3.3.
24    */
25 tan(7*%pi/10);
26 ev(%, %piargs:all);
27 factor(rootscontract(%));
28 /* => - cos 3 */
29 sqrt((1 + cos(6))/2);
30 /* cos(n pi) + sin((4 n - 1)/2 pi) => (-1)^n - 1 for integer n */
31 declare(n, integer)$
32 cos(n*%pi) + sin((4*n - 1)/2 * %pi);
33 /* cos(cos(n pi) pi) + sin(cos(n pi) pi/2) => -1 + (-1)^n for integer n */
34 cos(cos(n*%pi)*%pi) + sin(cos(n*%pi)*%pi/2);
35 /* sin([n^5/5 + n^4/2 + n^3/3 - n/30] pi) => 0 for integer n
36    [Paul Zimmermann] */
37 sin((n^5/5 + n^4/2 + n^3/3 - n/30) * %pi);
38 remove(n, integer)$
39 /* | cos x |, | sin x | => - cos x, - sin x  for  - 3 pi < x < - 5/2 pi */
40 assume(-3*%pi < x, x < -5/2*%pi)$
41 [abs(cos(x)), abs(sin(x))];
42 forget(-3*%pi < x, x < -5/2*%pi)$
43 /* Trigonometric manipulations---these are typically difficult for students */
44 r: cos(3*x)/cos(x);
45 /*  => cos(x)^2 - 3 sin(x)^2 or similar */
46 ratsimp(trigexpand(r));
47 /* => 2 cos(2 x) - 1 */
48 poissimp(ratsimp(trigexpand(r)));
49 ratsimp(trigreduce(ratsimp(trigexpand(r))));
50 /* Use rewrite rules => cos(x)^2 - 3 sin(x)^2 */
51 matchdeclare(n, integerp, x, true)$
52 defrule(cos_angles, cos(n*x),
53         cos((n - 1)*x) * cos(x) - sin((n - 1)*x) * sin(x));
54 defrule(sin_angles, sin(n*x),
55         sin((n - 1)*x) * cos(x) + cos((n - 1)*x) * sin(x));
56 apply2(r, cos_angles, sin_angles);
57 ratsimp(%);
58 remvalue(r)$
59 /* Here is a tricky way of writing 0/0 */
60 expr: (tan(x)^2 + 1 - sec(x)^2)/(sin(x)^2 + cos(x)^2 - 1);
61 /* Let's try simplifying this expression! */
62 trigsimp(expr);
63 /* What is its limit at zero? */
64 limit(expr, x, 0);
65 /* What is the derivative? */
66 diff(expr, x);
67 remvalue(expr)$