Exact Trigonometric Values
Exact trigonometric values are those values of and that can be calculated exactly.
The calculations of these values vary from very simple to somewhat complicated.
Imagine a right triangle in which base and hypotenuse are equal and height is Then
| x in radians | x in degrees | |||
|---|---|---|---|---|
Imagine a right triangle in which height and hypotenuse are equal and base is Then
| x in radians | x in degrees | |||
|---|---|---|---|---|
From the right isosceles triangle:
| x in radians | x in degrees | |||
|---|---|---|---|---|
From the equilateral triangle:
| x in radians | x in degrees | |||
|---|---|---|---|---|
For derivation of see Sine of 18°.
| x in radians | x in degrees | |||
|---|---|---|---|---|
The derivation of also produces the value which is in fact therefore:
| x in radians | x in degrees | |||
|---|---|---|---|---|
Derivation of cos 18°
Template:RoundBoxTop Let Then:
Therefore:
Simplify and result is:
or:
where or
Derivation of cos 36°
Then and
Therefore:
or
This cubic equation contains the root
Remove factor and remaining quadratic is:
Solutions of this quadratic are:
Calculation of tan 18°
Values for 18° and 36°
| x in radians | x in degrees | |||
|---|---|---|---|---|
Calculation of cos 9°
Using half-angle formula
Using difference formula
Radians Degrees Template:Math Template:Math Template:Math Template:Math Template:Math Template:Math
Template:RoundBoxBottom Although the two calculated values of are expressed differently, it can be shown that the two values and are equal.
By using similar techniques many exact values can be calculated.
Template:RoundBoxBottom
Exact Values for Common Angles
Other Expressions of Exact Values
Template:RoundBoxTop Depending on how the value is calculated, exact trigonometric values can be expressed in different ways. For example:
This value of contains calculation of 2 square roots. Value shown in table above contains calculation of 3 square roots.
This value of contains calculation of 3 square roots. Value shown in table above contains calculation of 4 square roots. Template:RoundBoxBottom
Create a Dictionary
If you would like to create a dictionary containing the above values, the following python code has been tested on a Mac: Template:RoundBoxTop
# python code
# Constants.py
import decimal
D = decimal.Decimal
decimal.getcontext().prec = 50
L1 = []
L1 += [('Angle in Degrees', ('Sine', 'Cosine', 'Tangent'))]
L1 += [(0, (0, 1, 0))]
r5 = D(5).sqrt()
r3 = D(3).sqrt()
r2 = D(2).sqrt()
root1 = (10 - 2*r5).sqrt()
sval = (8 - r3*(r5+1) - root1).sqrt()
cval = (8 + r3*(r5+1) + root1).sqrt()
L1 += [(3, (
sval/4,
cval/4,
sval/cval )
)]
L1 += [(6, (
((30 - 6*r5).sqrt() - r5 - 1) / 8,
( r3*(r5 + 1) + root1 ) / 8,
( (r5+1)*(5 - 2*r5).sqrt() + r3*(1 - r5) ) / 2 )
)]
v = (10 + 2*r5).sqrt()
sval = 4 - v
cval = 4 + v
r = (5 - 2*r5).sqrt()
L1 += [(
9, (
(sval/8).sqrt(),
(cval/8).sqrt(),
( 11 + 4*r5 - (3+r5)*v ).sqrt() )
# (+ 1 + r5 - r*(r5 + 2)) )
)]
v = (30-6*r5).sqrt()
L1 += [(
12, (
(7 - r5 - v).sqrt() / 4,
(9 + r5 + v).sqrt() / 4,
(92 - 40*r5 + (6*r5-14)*v ).sqrt() / 2 )
)]
L1 += [(
15, (
(r2*r3 - r2)/4,
(r2*r3 + r2)/4,
2 - r3 )
)]
L1 += [(
18, (
(r5-1)/4,
((10 + 2*r5).sqrt())/4,
(25 - 10*r5).sqrt()/5 )
)]
v = (7 + (30 - 6*r5).sqrt() - r5).sqrt()
sval = ((4 - v)/8).sqrt()
cval = ((4 + v)/8).sqrt()
L1 += [(
21, (
sval,
cval,
sval/cval )
)]
L1 += [(
22.5, (
(2 - r2).sqrt()/2,
(2 + r2).sqrt()/2,
r2 - 1 )
)]
L1 += [(
24, (
( r3*r5 + r3 - root1 ) / 8,
(1 + r5 + (30 - 6*r5).sqrt()) / 8,
( (3*r5+7)*(5-2*r5).sqrt() - r3*(r5+3) ) / 2 )
)]
v = root1
L1 += [(
27, (
((4 - v)/8).sqrt(),
((4 + v)/8).sqrt(),
( 11 - 4*r5 + (r5-3)*v ).sqrt() )
)]
L1 += [(
30, (
D('0.5'),
r3/2,
r3/3 )
)]
sval = 8 - r3*r5 - r3 + root1
sval = sval.sqrt()
cval = 8 + r3*r5 + r3 - root1
cval = cval.sqrt()
L1 += [(
33, (
sval/4,
cval/4,
sval/cval )
)]
L1 += [(
36, (
(10-2*r5).sqrt()/4,
(1+r5)/4,
(5 - 2*r5).sqrt() )
)]
v1 = (30 - 6*r5).sqrt()
v2 = 2*(7 - r5 - v1).sqrt()
sval = (8 - v2).sqrt()
cval = (8 + v2).sqrt()
L1 += [(
39, (
sval/4,
cval/4,
sval/cval )
)]
v = (30 - 6*r5).sqrt()
sval = (9 - v + r5).sqrt()/4
cval = (7 + v - r5).sqrt()/4
L1 += [(
42, (
sval,
cval,
sval/cval )
)]
L1 += [(
45, (
r2/2,
r2/2,
D(1) )
)]
dict1 = dict(L1)
Check the Dictionary
The following python code is used to check the contents of the dictionary and to verify that there are no obvious errors. Template:RoundBoxTop
almostZero = D('1e-' + str(decimal.getcontext().prec - 2));
print ()
print ('Checking each entry.')
# Basic check of each entry.
for angle in dict1 :
if isinstance (angle, str) : continue
sine, cosine, tangent = dict1[angle]
print ()
print (angle)
print (' ', sine)
print (' ', cosine)
print (' ', tangent)
diff = abs(1 -(sine*sine + cosine*cosine))
if diff > almostZero :
print ('error1:', diff)
diff = abs (sine/cosine - tangent)
if diff > almostZero :
print ('error2:', diff)
def getData (angle) :
# sin,cos = getData(angle)
if 135 >= angle >= 0 : pass
else :
print ('error3: angle =', angle)
if angle > 90 :
s1,c1,t1 = dict1[angle-90]
return (c1, -s1)
if angle > 45 :
s1,c1,t1 = dict1[90-angle]
return (c1,s1)
s1,c1,t1 = dict1[angle]
return (s1,c1)
print ()
print ('Checking doubles and triples.')
for angle1 in dict1 :
if isinstance (angle1, str) : continue
s1,c1,t1 = dict1[angle1]
angle2 = 2*angle1
s2,c2 = getData(angle2)
s2_ = 2*s1*c1
diff = abs (s2_ - s2)
if diff > almostZero :
print ('error4:', diff)
angle3 = 3*angle1
s3,c3 = getData(angle3)
c3_ = 4*c1*c1*c1 - 3*c1
diff = abs (c3_ - c3)
if diff > almostZero :
print ('error5:', diff)
Links to related Topics
Angle sum and difference identities
Using fifth roots of unity to calculate Cosine of 72°.