[Python-ideas] Fwd: Trigonometry in degrees
steve at pearwood.info
Mon Jun 11 14:38:07 EDT 2018
On Mon, Jun 11, 2018 at 10:24:42AM -0700, Michael Selik wrote:
> Would sind and cosd make Euler's formula work correctly?
> sind(x) + i * sind(x) == math.e ** (i * x)
No, using degrees makes Euler's identity *not* work correctly, unless
you add in a conversion factor from degrees to radians:
Euler's Identity works fine in radians:
py> from cmath import exp
which is close enough to -1 given the usual rounding issues with floats.
(Remember, math.pi is not π, but a number close to it. There is no way
to represent the irrational number π in less than an infinite amount of
memory without symbolic maths.)
> Perhaps you'd prefer an enhancement to the fractions module that provides
> real (not float) math?
I should think not. Niven's Theorem tells us that for rational angles
between 0° and 90° (that is, angles which can be represented as
fractions), there are only THREE for which sine (and cosine) are
Every value of sin(x) except for those three angles is an irrational
number, which means they cannot be represented exactly as fractions or
in a finite number of decimal places.
What that means is that if we tried to implement real (not float)
trigonometric functions on fractions, we'd need symbolic maths capable
of returning ever-more complicated expressions involving surds.
For example, the exact value of sin(7/2 °) involves a triple nested
1/2 sqrt(2 - sqrt(2 + sqrt(3)))
and that's one of the relatively pretty ones. sin(3°) is:
-1/2 (-1)^(29/60) ((-1)^(1/60) - 1) (1 + (-1)^(1/60))
This proposal was supposed to *simplify* the trig functions for
non-mathematicians, not make them mind-bogglingly complicated.
More information about the Python-ideas