Processing math: 100%

First time here? Check out the FAQ!

Ask Your Question
1

arcsin() return value with tiny imaginary part ?

asked 4 years ago

ortollj gravatar image

updated 4 years ago

Hi

where does this imaginary small quantity come from ?

SageMath notebook 9.1 W10

show(arcsin(sqrt(2)*sqrt(1/2)).n()) 

show(arcsin(sqrt(2)*sqrt(2^(-1))).n())

show(arcsin(sqrt(2)/sqrt(2)).n(),"\t ok no small imaginary part")
Preview: (hide)

1 Answer

Sort by » oldest newest most voted
2

answered 4 years ago

Florentin Jaffredo gravatar image

updated 4 years ago

It comes from machine precision. sqrt(2)*sqrt(1/2) is slightly bigger than one. In fact sqrt(2)*sqrt(1/2)-1 returns 2.22044604925031e-16 on my computer, instead of zero. To avoid the issue, you can simply replace .n() by .simplify().n().

Preview: (hide)
link

Comments

Hi Florentin

but arcsin((2.22044604925031e-16)).n() does not have tiny imaginary part .

ortollj gravatar imageortollj ( 4 years ago )

You forgot the +1. Arcsin is a complex (multivalued) function outside [1,1]. Try to compute arcsin(1+1/1000). (Also It's not accepting floats, since reals values outside the interval define a branch cut, you can find the plots on wikipedia).

Florentin Jaffredo gravatar imageFlorentin Jaffredo ( 4 years ago )

Thank you Florentin

ortollj gravatar imageortollj ( 4 years ago )

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 4 years ago

Seen: 256 times

Last updated: Nov 08 '20