MathOverflow will be down for maintenance for approximately 3 hours, starting Monday evening (06/24/2013) at approximately 9:00 PM Eastern time (UTC-4).
show/hide this revision's text 5 later note

This will look at first like a posting about trigonometry, then maybe about statistics, then finally about peculiarities of either

  • a certain random process; or
  • the pseudorandom number generator that I'm using; or
  • other (specify!).

My question is: Which is it? And what's actually going on? I suspect it's the second alternative, but I'm not at all confident about that.

In the course of doing a bit of amateur cartography, I derived this little trigonometric relation:

If $(\cos\alpha,\sin\alpha)$ is in the right half of the unit circle (in other words, $\cos\alpha>0$), and $$\tan\gamma=\dfrac{\sin\alpha\sin\beta}{\cos\alpha+\cos\beta},$$ and $\cos\gamma$ is also positive, then $$\tan\dfrac\gamma2=\tan\dfrac\alpha2\cdot\tan\dfrac\beta2.$$ Numerical evidence bore out what I had derived, so now I should live happily ever after.

(And I was moderately intrigued by the resemblance to the simpler and more familiar tangent half-angle formula $\dfrac{\sin\alpha+\sin\beta}{\cos\alpha+\cos\beta}=\tan\dfrac{\alpha+\beta}{2}$.)

But then I asked what happens in the left half of the circle, where the cosine is negative. The answer turns out to be $$ -\cot\frac\gamma2 = \tan\frac\alpha2\cdot\tan\frac\beta2. $$ [But see the "later note" below.]

But instead of deriving this by massaging trigonometric identities I got lazy and did some "experimental mathematics". Using R, I entered these commands:

a <- pi/180*(runif(1000)*(177 - 93) +93)
b <- pi/180*(runif(1000)*(177 - 93) +93) 
c <- atan( sin(a)*sin(b)/(cos(a)+cos(b) ))
u <- -1/(tan(a/2)*tan(b/2))
coefficients(lm(tan(c/2) ~ u))

(Intercept) u
0 1

anova(lm(tan(c/2) ~ u))

Analysis of Variance Table

Response: tan(c/2)
Df Sum Sq Mean Sq F value Pr(>F)
u 1 29.222 29.222 2.1747e+34 < 2.2e-16 *
Residuals 998 0.000 0.000
---
Signif. codes: 0 ‘
’ 0.001 ‘*’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Warning message:
In anova.lm(lm(tan(c/2) ~ u)) :
ANOVA F-tests on an essentially perfect fit are unreliable

plot(u,residuals(lm(tan(c/2) ~ u)))

So this puts $a$ and $b$ between $\pi/2$ and $\pi$, or more precisely, between $93\cdot\frac{\pi}{180}$ and $177\cdot\frac{\pi}{180}$, and chooses 1000 such pairs $(a,b)$ independently, and they're uniformly distributed in that region. Then it sets $c=\arctan(\sin a\sin b/(\cos a+\cos b))$, and $u=-1/(\tan a\tan b)$. Then we look at coefficients from a simple linear regression of $\tan(c/2)$ on $u$, and the software reports $0$ for the intercept and $1$ for the slope. An analysis of variance gives $0$ as the sum of squares of residuals, so it seems we have a perfect fit.

Finally, I plotted $u$ on the horizontal axis and the residuals on the vertical axis, and I got the following! If real numbers rather than approximations could be used, they would of course all be $0$, so this is about rounding errors, but still I wouldn't expect to see a pattern like this. I tried it a dozen or so times with pretty much the same result, and I tried it with the angles in the first quadrant and the identity that holds in that quadrant, with the same result again.

enter image description here

LATER NOTE: Well, haste makes waste, I guess. I should have let $\gamma$ be the "other value of" the arctangent once I moved into the second quadrant, i.e. $\gamma=\arctan(\cdots\cdots\cdots)+\pi$ as soon as the argument to the arctangent function was more than $\pi/2$. That way we still have the identity $\tan\frac\gamma2=\tan\frac\alpha2\cdot\tan\frac\beta2$. However, this doesn't upset the main point of this question. As I said, this already works in the first quadrant; I simply hadn't yet noticed it because at that point I was still doing things intelligently rather than numerically.

show/hide this revision's text 4 deleted 2 characters in body; deleted 9 characters in body

This will look at first like a posting about trigonometry, then maybe about statistics, then finally about peculiarities of either

  • a certain random process; or
  • the pseudorandom number generator that I'm using; or
  • other (specify!).

My question is: Which is it? And what's actually going on? I suspect it's the second alternative, but I'm not at all confident about that.

In the course of doing a bit of amateur cartography, I derived this little trigonometric relation:

If $(\cos\alpha,\sin\alpha)$ is in the right half of the unit circle (in other words, $\cos\alpha>0$), and $$\tan\gamma=\dfrac{\sin\alpha\sin\beta}{\cos\alpha+\cos\beta},$$ and $\cos\gamma$ is also positive, then $$\tan\dfrac\gamma2=\tan\dfrac\alpha2\cdot\tan\dfrac\beta2.$$ Numerical evidence bore out what I had derived, so now I should live happily ever after.

(And I was moderately intrigued by the resemblance to the simpler and more familiar tangent half-angle formula $\dfrac{\sin\alpha+\sin\beta}{\cos\alpha+\cos\beta}=\tan\dfrac{\alpha+\beta}{2}$.)

But then I asked what happens in the left half of the circle, where the cosine is negative. The answer turns out to be $$ -\cot\frac\gamma2 = \tan\frac\alpha2\cdot\tan\frac\beta2. $$

But instead of deriving this by massaging trigonometric identities I got lazy and did some "experimental mathematics". Using R, I entered these commands:

a <- pi/180*(runif(1000)*(177 - 93) +93)
b <- pi/180*(runif(1000)*(177 - 93) +93) 
c <- atan( sin(a)*sin(b)/(cos(a)+cos(b) ))
u <- -1/(tan(a/2)*tan(b/2))
coefficients(lm(tan(c/2) ~ u))

(Intercept) u
0 1

anova(lm(tan(c/2) ~ u))

Analysis of Variance Table

Response: tan(c/2)
Df Sum Sq Mean Sq F value Pr(>F)
u 1 29.222 29.222 2.1747e+34 < 2.2e-16 *
Residuals 998 0.000 0.000
---
Signif. codes: 0 ‘
’ 0.001 ‘*’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Warning message:
In anova.lm(lm(tan(c/2) ~ u)) :
ANOVA F-tests on an essentially perfect fit are unreliable

plot(u,residuals(lm(tan(c/2) ~ u)))

So this puts $a$ and $b$ between $\pi/2$ and $\pi$, or more precisely, between $93\cdot\frac{\pi}{180}$ and $177\cdot\frac{\pi}{180}$, and chooses 1000 such pairs $(a,b)$ independently, and they're uniformly distributed in that region. Then it sets $c=\arctan(\sin a\sin b/(\cos a+\cos b))$, and $u=-1/(\tan a\tan b)$. Then we look at coefficients from a simple linear regression of $\tan(a/2)\tan(b/2)$ \tan(c/2)$ on $u$, and the software reports $0$ for the intercept and $1$ for the slope. An analysis of variance gives $0$ as the sum of squares of residuals, so it seems we have a perfect fit.

Finally, I plotted $u$ on the horizontal axis and the residuals on the vertical axis, and I got the following! If real numbers rather than approximations could be used, they would of course all be $0$, so this is about rounding errors, but still I wouldn't expect to see a pattern like this. I tried it a dozen or so times with pretty much the same result, and I tried it with the angles in the first quadrant and the identity that holds in that quadrant, with the same result again.

enter image description here

show/hide this revision's text 3 close parenthesis

This will look at first like a posting about trigonometry, then maybe about statistics, then finally about peculiarities of either

  • a certain random process; or
  • the pseudorandom number generator that I'm using; or
  • other (specify!).

My question is: Which is it? And what's actually going on? I suspect it's the second alternative, but I'm not at all confident about that.

In the course of doing a bit of amateur cartography, I derived this little trigonometric relation:

If $(\cos\alpha,\sin\alpha)$ is in the right half of the unit circle (in other words, $\cos\alpha>0$, \cos\alpha>0$), and $$\tan\gamma=\dfrac{\sin\alpha\sin\beta}{\cos\alpha+\cos\beta},$$ and $\cos\gamma$ is also positive, then $$\tan\dfrac\gamma2=\tan\dfrac\alpha2\cdot\tan\dfrac\beta2.$$ Numerical evidence bore out what I had derived, so now I should live happily ever after.

(And I was moderately intrigued by the resemblance to the simpler and more familiar tangent half-angle formula $\dfrac{\sin\alpha+\sin\beta}{\cos\alpha+\cos\beta}=\tan\dfrac{\alpha+\beta}{2}$.)

But then I asked what happens in the left half of the circle, where the cosine is negative. The answer turns out to be $$ -\cot\frac\gamma2 = \tan\frac\alpha2\cdot\tan\frac\beta2. $$

But instead of deriving this by massaging trigonometric identities I got lazy and did some "experimental mathematics". Using R, I entered these commands:

a <- pi/180*(runif(1000)*(177 - 93) +93)
b <- pi/180*(runif(1000)*(177 - 93) +93) 
c <- atan( sin(a)*sin(b)/(cos(a)+cos(b) ))
u <- -1/(tan(a/2)*tan(b/2))
coefficients(lm(tan(c/2) ~ u))

(Intercept) u
0 1

anova(lm(tan(c/2) ~ u))

Analysis of Variance Table

Response: tan(c/2)
Df Sum Sq Mean Sq F value Pr(>F)
u 1 29.222 29.222 2.1747e+34 < 2.2e-16 *
Residuals 998 0.000 0.000
---
Signif. codes: 0 ‘
’ 0.001 ‘*’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Warning message:
In anova.lm(lm(tan(c/2) ~ u)) :
ANOVA F-tests on an essentially perfect fit are unreliable

plot(u,residuals(lm(tan(c/2) ~ u)))

So this puts $a$ and $b$ between $\pi/2$ and $\pi$, or more precisely, between $93\cdot\frac{\pi}{180}$ and $177\cdot\frac{\pi}{180}$, and chooses 1000 such pairs $(a,b)$ independently, and they're uniformly distributed in that region. Then it sets $c=\arctan(\sin a\sin b/(\cos a+\cos b))$, and $u=-1/(\tan a\tan b)$. Then we look at coefficients from a simple linear regression of $\tan(a/2)\tan(b/2)$ on $u$, and the software reports $0$ for the intercept and $1$ for the slope. An analysis of variance gives $0$ as the sum of squares of residuals, so it seems we have a perfect fit.

Finally, I plotted $u$ on the horizontal axis and the residuals on the vertical axis, and I got the following! If real numbers rather than approximations could be used, they would of course all be $0$, so this is about rounding errors, but still I wouldn't expect to see a pattern like this. I tried it a dozen or so times with pretty much the same result, and I tried it with the angles in the first quadrant and the identity that holds in that quadrant, with the same result again.

enter image description here

show/hide this revision's text 2 deleted 1 characters in body; deleted 17 characters in body; edited body
show/hide this revision's text 1