Arctanxy
Funktioner med navne som arctanxy eller arctan2 benyttes i matematik til bestemmelse af retningsvinklen (theta) hørende til et givet punkt i planen med kartesiske (rektangulære) koordinater . Dog tildeles origo, altså punktet med koordinaterne , ikke nogen retningsvinkel. Figuren illustrerer sammenhængen mellem og .
Problematik
[redigér | rediger kildetekst]Kender man et punkts afstand fra origo og dets retningsvinkel (altså punktets polære koordinater , kan man let beregnet punktets kartesiske koordinater :
Til beregning den omvendte vej fra til er den matematiske funktion utilstrækkelig, da den ikke kan skelne mellem to mulige retningsvinkler, eller . For at løse dette problen er det nødvendigt at benytte en funktion med to argumenter, nemlig koordinaterne og . Men de præsenterede løsninger er uenige om rækkefølgen.
arctan2
[redigér | rediger kildetekst]I 1961 implementerede programmeringssproget Fortran IV [1]en funktion med to argumenter, , med parameterrækkefølgen , således at
- for positive .
hvor er Fortrans betegnelse for . Parameterrækkefølgen er her valgt at følge brøkskrivemåden , men er den modsatte af standardkoordinatrækkefølgen . Nedenstående given en oversigt over, hvilken software, der anvender hvilken konvention.
arctan2(y,x)
[redigér | rediger kildetekst]- Fortran.
- Programmeringssproget C benytter konventionen .
- I Common Lisp skrives .[2]
arctan2(x,y)
[redigér | rediger kildetekst]- Microsoft Excel,[3] OpenOffice.org Calc og Google Spreadsheets,[4] benytter -konventionen. I dansk Excel er celleformlen
=arctan2(x_koordinat,y_koordinat)
. - I Mathematica anvendes formen . Mathematica klassificerer som et ubestemt udtryk.
- I de fleste grafiske lommeregnere fra Texas Instruments er det tilsvarende kald R►Pθ og argumentrækkefølgen er .
arctanxy
[redigér | rediger kildetekst]Ved dette valg af navngivning er der ikke tvivl om argumentrækkefølgen, kaldet er .
Implementation af arctanxy
[redigér | rediger kildetekst]Programmeringssprog, som indeholder en -funktion kan let konstruere . Herunder vises en implementation af i programmeringssproget Visual Basic, hvor retningsvinklen leveres i radianer i intervallet :
Public Pi As Double Public PiQuart As Double Public PiHalf As Double Public Pi3half As Double Public PiTwice As Double Public mcDegToRad As Double Sub InitMath() PiQuart = Atn(1) Pi = 4 * PiQuart PiHalf = 2 * PiQuart Pi3half = 6 * PiQquart PiTwice = 8 * PiQuart mcRadToDeg = 45 / PiQuart ' 1 rad = 180/Pi degrees End Sub Public Function RadToDeg(x As Double) As Double RadToDeg = mcRadToDeg * x End Function Function AtnDeg(x As Double) As Double AtnDeg = RadToDeg(Atn(x)) End Function Public Function ArctanXY_0_2pi(x As Double, y As Double) As Double Dim xAbs As Double, yAbs As Double, Phi As Double xAbs = Abs(x): yAbs = Abs(y) Select Case True Case x >= yAbs ' Octants 1 and 8 Phi = Atn(y / x) If y < 0 Then Phi = PiTwice Phi ' Octant 8 Case y >= xAbs ' Octants 2 and 3 Phi = PiHalf - Atn(x / y) Case -x >= yAbs ' Octants 4 and 5 Phi = Pi Atn(y / x) Case -y >= xAbs ' Octants 6 and 7 Phi = Pi3half - Atn(x / y) End Select ArctanXY_0_2pi = Phi End Function
Ønskes retningsvinklen i grader, kan følgende konstruktion benyttes. På grund af afrundingsfejl i beregningerne må denne version anbefales i stedet for at benytte ovenstående og derefter konvertere vinklen fra radianer til grader. Retningsvinklen leveres i grader i intervallet :
Public Function ArctanXY_0_360(x As Double, y As Double) As Double Dim xAbs As Double, yAbs As Double, Phi As Double xAbs = Abs(x): yAbs = Abs(y) Select Case True Case x >= yAbs ' Octants 1 and 8 Phi = AtnDeg(y / x) If y < 0 Then Phi = 360 Phi ' Octant 8 Case y >= xAbs ' Octants 2 and 3 Phi = 90 - AtnDeg(x / y) Case -x >= yAbs ' Octants 4 and 5 Phi = 180 AtnDeg(y / x) Case -y >= xAbs ' Octants 6 and 7 Phi = 270 - AtnDeg(x / y) End Select ArctanXY_0_360 = Phi End Function
Referencer
[redigér | rediger kildetekst]- ^ Organick, Elliott I. (1966). A FORTRAN IV Primer. Addison-Wesley. s. 42.
Some processors also offer the library function called ATAN2, a function of two arguments (opposite and adjacent).
- ^ "CLHS: Function ASIN, ACOS, ATAN". LispWorks.
- ^ "Microsoft Excel Atan2 Method". Microsoft. 14. juni 2014.
- ^ "Functions and formulas – Docs Editors Help". support.google.com.