Section courante

A propos

Section administrative du site

En REXX, il n'existe aucune fonction «Atn», «ATan» ou «ArcTan» permettant de calculer le ArcTangente d'un cercle. Pour remédier à se problème, il suffit de créer une fonction ressemblant à ceci avec un préalable la fonction de racine carré :

  1. R = 0.0
  2. DO WHILE R <= 1.1
  3.    SAY "ArcTan(" || R || ")=" || ArcTan(R)  
  4.    R = R + 0.1
  5. END 
  6. EXIT
  7.  
  8. Sqrt :PROCEDURE  
  9.  NUMERIC DIGITS 12 
  10.  PARSE ARG N 
  11.  IF N<=0 Then RETURN 0 
  12.  PARSE Value Format(N,,,,0) WITH N'E'Ep 
  13.  IF Ep='' THEN Ep = 0  
  14.   ELSE  
  15.  IF Abs(Ep // 2) THEN DO 
  16.   N = N * 10 
  17.   Ep = Ep - 1  
  18.  END 
  19.  DO X=2 WHILE X * X < N  
  20.  END 
  21.  DO FOREVER 
  22.   X1 = ( N / X + X) / 2  
  23.   IF X = X1 THEN LEAVE  
  24.   X = X1 
  25.  END 
  26.  RETURN X'e'Ep/2
  27.  
  28. ArcTan :PROCEDURE  
  29.  NUMERIC DIGITS 12 
  30.  Arg X 
  31.  X = X / Sqrt(X * X + 1) 
  32.  IF Abs(X) > 1 THEN RETURN 0 
  33.  IF Abs(X) >= 0.75 THEN DO
  34.   Flip = Sign(X) * 1.5707963267948966192 
  35.   X = Sqrt( 1 - X * X) 
  36.  END 
  37.   ELSE  
  38.  Flip = 0 
  39.  F = X 
  40.  Y = X 
  41.  YY = X 
  42.  X = X * X 
  43.  DO N = 2 BY 2 
  44.   F = F * X * (N - 1) / N 
  45.   Y = Y + F / ( N + 1) 
  46.   IF YY = Y THEN LEAVE 
  47.   YY = Y 
  48.  END 
  49.  IF Flip<>0 THEN Y = Flip - Y 
  50.  RETURN Y

on obtiendra le résultat suivant:

ArcTan(0.0)=0
ArcTan(0.1)=0.0996686524914
ArcTan(0.2)=0.197395559849
ArcTan(0.3)=0.291456794480
ArcTan(0.4)=0.380506377112
ArcTan(0.5)=0.463647609000
ArcTan(0.6)=0.540419500269
ArcTan(0.7)=0.610725964384
ArcTan(0.8)=0.674740942221
ArcTan(0.9)=0.732815101782
ArcTan(1.0)=0.785398163394
ArcTan(1.1)=0.832981266675


Dernière mise à jour : Dimanche, le 16 novembre 2014