Calculator Magic #4 Trigonometry Functions |
The ABC's of It
Prerequisite:
Introduction to Programming a Four-Function Calculator
Suggested Reading: The Black Box
Challenge
If you don't have your Trigonometry tables handy, not all is lost. You can accomplish everything you need with your simple calculator, with sufficient accuracy to please anyone. Taylor series and Maclaurin series lend themselves to easy programming in factored form, so those are what we will use.
Evaluating angles on a 360° scale is an arbitrary decision, based upon that number's great factorability. Trig tables accommodate specifications in degrees, because that's how most humans relate to them. Yet the principles of trigonometry are based upon pi, not 360. For our purposes, any angle specified in degrees must first be converted to radians, as follows:
That decimal value is irrational, so a 7-digit approximation is the best that we can do with a calculator.
SINE
The power series for sine is:
That structure is inconvenient, but the first first five terms of the series can be factored thusly:
This will be plenty accurate enough for most any application; Let's try
a problem: sin(32°):
32 × .0174533 M+ | x (radians) to memory |
× = ÷ 72 - 1 | |
× MR × MR ÷ 42 + 1 | |
× MR × MR ÷ 20 - 1 | |
× MR × MR ÷ 6 + 1 | |
× MR MC = | {.5299194} |
That's all there is to it. x was stored in memory, which was cleared in the last step to prepare for the next calculation. The result is accurate to six places.
One can opt for a shortcut formula, using only the first three factors from the series:
32 × .0174533 M+ | |
× = ÷ 20 - 1 | |
× MR × MR ÷ 6 + 1 | |
× MR MC = | {.5299228} |
This result still is accurate to five places! Powerful stuff.
COSINE
The power series is:
The first five terms factor to:
Let's do a problem: cos(17.4°). The program structure is similar to the first one:
17.4 × .0174533 M+ | |
× = ÷ 56 - 1 | |
× MR × MR ÷ 30 + 1 | |
× MR × MR ÷ 12 - 1 | |
× MR × MR ÷ 2 + 1 | |
MC = | {.9542404} |
Once again — 6-decimal accuracy. The correct
value is {.9542403}. How well does a 3-factor
shortcut fare this time?
17.4 × .0174533 M+ | |
× = ÷ 12 - 1 | |
× MR × MR ÷ 2 + 1 | |
MC = | {.9542414} |
Same story — 5 good digits. This stuff is easy.
TANGENT
There are options here. You could calculate sin x and divide it by cos x, or else try a new series:
The fifth term of the series does not lend itself to these factoring methods, so we will use four terms only:
Let's try tan(23°):
23 × .0174533 M+ | |
× = × 17 ÷ 42 + 1 | |
× MR × MR × 2 ÷ 5 + 1 | |
× MR × MR ÷ 3 + 1 | |
× MR MC = | {.4244686} |
The correct value is {.4244744}. Not bad.
A value for secant, cosecant, or cotangent can easily be derived by taking the reciprocal of its corresponding function.
The programs for the inverse functions can be somewhat more
complicated — particularly that for Arccosine. Each
calculated value is converted from radians back to degrees at the end,
by dividing by pi/180.
ARCSINE
Here is just the factored series:
In this case, x is the sine of some angle. Extracting the arcsine yields the angle itself.
The structure of the equation is the same as for a sine, with the addition of the odd perfect squares in the numerators. That adds a few keystrokes to the program code. Since we already have calculated the sine of 32°, let's try taking arcsin(sin(32)):
.5299195 M+ | |
× = × 49 ÷ 72 + 1 | |
× MR × MR × 25 ÷ 42 + 1 | |
× MR × MR × 9 ÷ 20 + 1 | |
× MR × MR ÷ 6 + 1 | |
× MR MC = | {.5584789} |
That's the angle, in radians. To convert back to degrees, we continue with:
÷ .0174533 = | {31.99847} |
That's only 4-digit accuracy, because the arcsine series resolves relatively slowly. It's the best we can do without incorporating more factors.
ARCCOSINE
It would be convenient to utilize this relationship:
This series fails, however, unless x is quite small. Another identity reduces the size of the number for our program:
We can use the [sqrt] key to help us solve arccos(.9542403):
.9542403 × = M+ | |
1 - MR MC = | value of the radical |
SQRT M+ | {.2990409} |
× = × 49 ÷ 72 + 1 | |
× MR × MR × 25 ÷ 42 + 1 | |
× MR × MR × 9 ÷ 20 + 1 | |
× MR × MR ÷ 6 + 1 | |
× MR MC M+ | {.3036873} = radians |
3.14159 ÷ 2 - MR MC = | {17.399993} |
We were expecting 17.4°, and we got it!
ARCTANGENT
This factors to:
Let's try arctan(.42447):
.42447 M+ | |
× = × 7 ÷ 9 - 1 | |
× MR × MR × 5 ÷ 7 + 1 | |
× MR × MR × 3 ÷ 5 - 1 | |
× MR × MR ÷ 3 + 1 | |
× MR MC | |
÷ .0174533 = | {23.00012} |
That's 5-digit accuracy — as much as we started with.
Here is the 3-factor shortcut:
.42447 M+ | |
× = × 3 ÷ 5 - 1 | |
× MR × MR ÷ 3 + 1 | |
× MR MC | |
÷ .0174533 = | {23.017595} |
That's three good digits — plenty adequate for a minimal routine.
The power series for the hyperbolic functions are more complicated,
with each having a negative exponent. They could be programmed,
though — perhaps another time.