1の境界を拾う計算

 投稿者:たろさ  投稿日:2016年12月18日(日)01時33分36秒
  DECLARE EXTERNAL FUNCTION SIN
DECLARE EXTERNAL FUNCTION cos
DECLARE EXTERNAL FUNCTION TAN
DECLARE EXTERNAL FUNCTION sn
LET x=1.57
FOR i=2 TO 55
   PRINT sn(i,x)
   LET x=sn(i,x)
NEXT i
END

EXTERNAL FUNCTION sn(i,x)
DECLARE EXTERNAL FUNCTION cos
DECLARE EXTERNAL FUNCTION SIN
DECLARE EXTERNAL FUNCTION TAN
DEF f(x)=x/PI*x-TAN(x)*x
LET S=i
LET s1=1/10^(i-1)
LET s2=1/10^s
LET t1=x-s1
LET t2=x
FOR x=t1 TO t2 STEP s2
! PRINT f(x)
   IF f(x)>1 THEN EXIT FOR
NEXT x
LET sn=x
END FUNCTION


! 1000桁モードで利用する正弦,余弦,正接関数
EXTERNAL FUNCTION sin(x)
DECLARE EXTERNAL FUNCTION cos
IF x<0 THEN
   LET sin=-sin(-x)
ELSEIF x>2*PI THEN
   LET sin=sin(MOD(x,2*PI))
ELSEIF x>PI THEN
   LET sin=-sin(x-PI)
ELSEIF x>PI/2 THEN
   LET sin=sin(PI-x)
ELSEIF x>PI/4 THEN
   LET sin=cos(PI/2-x)
ELSE       ! マクローリン級数による近似
   LET y=x
   LET n=0
   LET t=y
   DO
      LET y0=y
      LET n=n+1
      LET t=-t*x^2/((2*n)*(2*n+1))
      LET y=y+t
   LOOP UNTIL y0=y
   LET sin=y
END IF
END FUNCTION
!
EXTERNAL FUNCTION cos(x)
DECLARE EXTERNAL FUNCTION sin
IF x<0 THEN
   LET cos=cos(-x)
ELSEIF x>2*PI THEN
   LET cos=cos(MOD(x,2*PI))
ELSEIF x>PI THEN
   LET cos=-cos(x-PI)
ELSEIF x>PI/2 THEN
   LET cos=-cos(PI-x)
ELSEIF x>PI/4 THEN
   LET cos=sin(PI/2-x)
ELSE       ! マクローリン級数による近似
   LET y=1
   LET n=0
   LET t=y
   DO
      LET y0=y
      LET n=n+1
      LET t=-t*x^2/((2*n-1)*(2*n))
      LET y=y+t
   LOOP UNTIL y0=y
   LET cos=y
END IF
END FUNCTION
!
EXTERNAL FUNCTION tan(x)
DECLARE EXTERNAL FUNCTION sin,cos
LET tan=sin(x)/cos(x)
END FUNCTION

1000桁モードで実行するとPI/2になりました。

http://blogs.yahoo.co.jp/donald_stinger

 

戻る