Understanding Arccos(x) for Values Outside [-1, 1]

  • Context: Undergrad 
  • Thread starter Thread starter Philosophaie
  • Start date Start date
Click For Summary
SUMMARY

The discussion focuses on the implications of calculating arccos(x) for values of x outside the range [-1, 1]. It establishes that for real numbers, the cosine function is confined to this interval, and values exceeding this range necessitate the use of complex numbers. The participants detail methods for handling these cases, including the quadratic formula for solving cos(z) = (e^z + e^{-z})/2 and the use of atan2 for angle calculations. Additionally, they emphasize the importance of precision in numerical computations to avoid errors when working with values close to the boundaries.

PREREQUISITES
  • Understanding of trigonometric functions, specifically cosine and its inverse, arccos.
  • Familiarity with complex numbers and their properties.
  • Knowledge of numerical methods and precision issues in computations.
  • Basic algebra, including solving quadratic equations.
NEXT STEPS
  • Study complex analysis, focusing on functions like cos(z) and their applications.
  • Learn about numerical stability and precision in floating-point arithmetic.
  • Explore the use of atan2 for angle calculations in programming languages.
  • Investigate the properties of the inverse hyperbolic cosine function, arccosh.
USEFUL FOR

Mathematicians, computer scientists, and software developers dealing with trigonometric calculations, particularly in applications requiring high precision and complex number handling.

Philosophaie
Messages
456
Reaction score
0
What happens if you have to take the arccos of a number greater than 1 or less than -1.

I know from a right triangle if you have:

[ tex ]\Theta[ /tex ]=arccos(x)

if you use x as the adjacent side, 1 as the hypotenuse and [ tex ]\sqrt{1-x^2}[ /tex ] as the opposite.

Is that where the negative sign start?

I have an equation that has numbers from -1.01 to 1.01 as inputs "x". The output runs from 0 to 180 without the numbers 180 to 359 or any negative numbers.

Where do I find the negative or the higher angles?
 
Last edited:
Physics news on Phys.org
Cos and sin of real variables are confined to the [-1,1] range. To get outside this range, you have to use complex numbers, i.e. cos(z) where z is complex. To get arccos of u, when |u| > 1, you will end up with a complex number.
 
As mathman said, for any real x, cos(x) lies in the interval [-1, 1]. To go outside that you must look for a complex z.

For z a complex number, cos(z)= (e^z+ e^{-z})/2. If y> 1, you must solve (e^z+ e^{-z})/2= y for y. One way to do that is to let x= e^z so that the equation is so that the equation becomes x+ 1/x= 2y. Multiplying through by x, that gives the quadratic equation x^2+ 1= 2xy or x^2- 2y x+ 1= 0. Solve that with the quadratic formula.
 
HallsofIvy said:
As mathman said, for any real x, cos(x) lies in the interval [-1, 1]. To go outside that you must look for a complex z.

For z a complex number, cos(z)= (e^z+ e^{-z})/2. If y> 1, you must solve (e^z+ e^{-z})/2= y for y. One way to do that is to let x= e^z so that the equation is so that the equation becomes x+ 1/x= 2y. Multiplying through by x, that gives the quadratic equation x^2+ 1= 2xy or x^2- 2y x+ 1= 0. Solve that with the quadratic formula.

Actually, cos(z) = (e^(i z) + e^(-iz))/2. However, as long as you let x=e^(i z), you'll still be able to take the same approach to solve the problem.
 
When dealing with computers, it is at times very easy to arrive at some value that is supposed to be the cosine of a real (rather than complex) angle but the computed value is slightly outside the interval [-1, 1].

Suppose the variable in question is costheta and from this you want to compute the value of theta. A fairly standard approach is
  • If costheta is between -1 and +1 use theta=acos(costheta).
  • If costheta is less than -1 by a small amount, use theta=M_PI.
  • If costheta is greater than +1 by a small amount, use theta=0.
  • Otherwise, croak. The angle is supposed to be real, not complex, so the odds are that a mistake was made somewhere along the way in calculating costheta.

A similar concern exists for sine, where values slightly less than -1 map to -pi/2, slightly greater than 1 to pi/2.

That said, there are (at least) a couple of other options if you can simultaneously compute costheta and sintheta. One approach is to use
  • theta=asin(sintheta) if abs(sintheta)<abs(costheta),
  • theta=acos(costheta), otherwise.
This simultaneously avoids the range error problem and avoids precision loss problems. Calling acos or asin with an argument -1 or +1 loses several bits of precision.

An even easier approach is to use atan2(sintheta, costheta) or atan2(costheta, sintheta), depending on the language.
 
Char. Limit said:
Actually, cos(z) = (e^(i z) + e^(-iz))/2. However, as long as you let x=e^(i z), you'll still be able to take the same approach to solve the problem.
Yes, thanks.
 
In general, arccos(x) = (1/i)*log(x + sqrt(x2-1)) = (1/i)*log(x + i*sqrt(1-x2))

So arccos(x) = -i*arccosh(x) if x > 1
 
Given the ranges of values in the original post, this problem is not about extending cosine and its inverse to the complex numbers. I strongly suspect the underlying problem here is dealing with the numerical errors that result in calculating some number that is supposed to be the cosine of some real (not complex!) number.
 

Similar threads

  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 12 ·
Replies
12
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 13 ·
Replies
13
Views
2K
  • · Replies 12 ·
Replies
12
Views
3K
  • · Replies 25 ·
Replies
25
Views
913
  • · Replies 10 ·
Replies
10
Views
4K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K