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 radiansx in degrees

Imagine a right triangle in which height and hypotenuse are equal and base is Then

x in radiansx in degrees

From the right isosceles triangle:

x in radiansx in degrees

From the equilateral triangle:

x in radiansx in degrees

For derivation of see Sine of 18°.

x in radiansx in degrees

The derivation of also produces the value which is in fact therefore:

x in radiansx in degrees

Derivation of cos 18°

Let Then:

Therefore:

Simplify and result is:

or:

where or

Derivation of cos 36°

Let

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 radiansx in degrees

Calculation of cos 9°

Using half-angle formula

Using difference formula

RadiansDegreessincos
π/536°
π/445°

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.

Exact Values for Common Angles

RadiansDegreessincostan
π/60
π/30
π/20
π/1512°
π/1215°
π/1018°
7π/6021°
π/822.5°
2π/1524°
3π/2027°
π/630°
11π/6033°
π/536°
13π/6039°
7π/3042°
π/445°

Other Expressions of Exact Values

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.

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:

# 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.

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

Angle sum identities

Double-angle formulae

Half-angle formulae

Simple algebraic values

Common angles

Using fifth roots of unity to calculate Cosine of 72°.

Calculating π

Testing taylor series for

This article is issued from Wikiversity. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.