fortran66のブログ

fortran について書きます。

【メモ帳】arcsin

導出メモ

すぐ忘れるw

\displaystyle \sin(x)={\exp(ix)-\exp(-ix)\over 2i}

\displaystyle 2i\exp(ix)\sin(x)=\exp(2ix)-1

\displaystyle \exp(2ix)-2i\exp(ix)\sin(x)-1=0

これを  \exp(ix)二次方程式と見て解くと

\displaystyle \exp(ix)=i\sin(x)+\sqrt{-\sin^2(x)+1}

但しプラスの解だけを取った。ここで両辺の対数を取ると、

\displaystyle ix=\log\left(i\sin(x)+\sqrt{1-\sin^2(x)}\right)

となる。

さて  \sin(x)=z と置き換えることを考えると  x=\arcsin(z) なので、

\displaystyle \arcsin(z) =-i\log(iz+\sqrt{1-z^2})

が求まる。

check

    program arcsine
        implicit none
        real :: x
        complex :: c, ci = (0.0, 1.0)
        integer :: i
        do i = 1, 10
            call random_number(x)
            print *, x, ':', asin(x), -ci * log(ci*x+sqrt(1.0-x*x))
        end do
        
        print *
        
        do i = 1, 10
            c = cmplx(i*i*i, i*i) * 1.0e-2
            print *, c, ':', asin(c), -ci * log(ci*c+sqrt(1.0-c*c))
        end do    
    end program arcsine
 3.9208680E-07 :  3.9208680E-07 (3.9208680E-07,-7.6866031E-14)
 2.5480442E-02 :  2.5483200E-02 (2.5483200E-02,-1.2659941E-08)
 0.3525161     :  0.3602585     (0.3602585,-5.6824399E-09)
 0.6669145     :  0.7300602     (0.7300602,-8.5801748E-09)
 0.9630555     :   1.298127     (1.298127,-7.1473925E-09)
 0.8382882     :  0.9941360     (0.9941360,-6.4942043E-09)
 0.3353550     :  0.3419821     (0.3419821,-3.6983820E-09)
 0.9153272     :   1.156320     (1.156320,2.0078712E-09)
 0.7958636     :  0.9204326     (0.9204326,-2.7873030E-08)
 0.8326931     :  0.9839536     (0.9839535,-2.3087523E-09)

(9.9999998E-03,9.9999998E-03) : (9.9996664E-03,1.0000333E-02) (9.9996664E-03,1.0000329E-02)
(7.9999998E-02,3.9999999E-02) : (8.0021039E-02,4.0117647E-02) (8.0021039E-02,4.0117655E-02)
(0.2700000,8.9999996E-02) : (0.2721770,9.3304269E-02) (0.2721770,9.3304262E-02)
(0.6400000,0.1600000) : (0.6775884,0.2039517) (0.6775884,0.2039518)
(1.250000,0.2500000) : (1.270154,0.7668216) (1.270154,0.7668217)
(2.160000,0.3600000) : (1.385768,1.424145) (1.385768,1.424145)
(3.430000,0.4900000) : (1.422694,1.915248) (1.422694,1.915249)
(5.120000,0.6400000) : (1.444065,2.324834) (1.444065,2.324834)
(7.290000,0.8100000) : (1.459105,2.681223) (1.459105,2.681221)
(10.00000,1.000000) : (1.470634,2.998273) (1.470634,2.998266)