Atan2: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
KKeine Bearbeitungszusammenfassung
 
(16 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
===Zugehörige Evaluatoren===
*'''MathEvaluator'''
===Beschreibung===
===Beschreibung===
Der Arkustangens 2 wird durch die Funktion ''atan2'' beschrieben. Sie erwartet zwei Parameter und gibt einen Wert zurück.
Der Arkustangens 2 wird durch die Funktion ''atan2'' beschrieben. Sie erwartet zwei Parameter und gibt einen Wert zurück.


===Syntax===
===Syntax===
  atan2(String zahl1,String zahl2)
  atan2([[Gleitkommazahl]] zahl1,[[Gleitkommazahl]] zahl2)


===Parameter===
===Parameter===
Zeile 13: Zeile 16:


=== Beispiele===
=== Beispiele===
atan2('0','0')    --> returns 0
==== Standardfälle ====
 
atan2(1, 0)   --> returns \(\frac{1}{2} * \pi\)
====JUnit Tests====
<span class="mw-customtoggle-myDivision">[Anzeigen]</span>
<syntaxhighlight lang="java" class="mw-collapsible mw-collapsed" id="mw-customcollapsible-myDivision">
private double PI = Math.PI;
 
@Test(expected = FunctionInvalidArgumentException.class)
public void testAtan2_1() {
assertEquals(0, Evaluator.getNumberResult("atan2('0','0')", exerciseVariableMap, fillInVariableMap), 0.0001);
}
 
@Test
public void testAtan2_2() {
assertEquals(0, Evaluator.getNumberResult("atan2('0','0.5')", exerciseVariableMap, fillInVariableMap), 0.0001);
}
 
@Test
public void testAtan2_3() {
assertEquals(0.7853981633974483,
Evaluator.getNumberResult("atan2('0.5','0.5')", exerciseVariableMap, fillInVariableMap), 0.0001);
}
 
@Test
public void testAtan2AtDefinition1() {
assertEquals(PI, Evaluator.getNumberResult("atan2(0, -1)", exerciseVariableMap, fillInVariableMap), 0.0001);
}
 
@Test
public void testAtan2AtDefinition2() {
assertEquals(0, Evaluator.getNumberResult("atan2(0, 1)", exerciseVariableMap, fillInVariableMap), 0.0001);
}
 
@Test
public void testAtan2AtDefinition3() {
assertEquals(PI / 2, Evaluator.getNumberResult("atan2(1, 0)", exerciseVariableMap, fillInVariableMap), 0.0001);
}
 
@Test
public void testAtan2AtDefinition4() {
assertEquals(-PI / 2, Evaluator.getNumberResult("atan2(-1, 0)", exerciseVariableMap, fillInVariableMap),
0.0001);
}
 
@Test(expected = FunctionInvalidArgumentException.class)
public void testAtan2WithInput1() {
assertEquals(0, Evaluator.getNumberResult("atan2('0','[pos=1]')", exerciseVariableMap, fillInVariableMap),
0.0001);
}
 
@Test
public void testAtan2WithInput2() {
assertEquals(PI / 2,
Evaluator.getNumberResult("atan2('[pos=2]','[pos=1]')", exerciseVariableMap, fillInVariableMap),
0.0001);
}
 
@Test(expected = FunctionInvalidArgumentException.class)
public void testAtan2WithVariables1() {
assertEquals(0, Evaluator.getNumberResult("atan2('[var=a]','0')", exerciseVariableMap, fillInVariableMap),
0.0001);
}
 
@Test
public void testAtan2WithVariables2() {
assertEquals(PI / 2,
Evaluator.getNumberResult("atan2('[var=b]','[var=a]')", exerciseVariableMap, fillInVariableMap),
0.0001);
}


@Test(expected = FunctionInvalidArgumentException.class)
'''JACK2:'''
public void testAtan2WithExpression1() {
atan2(0, 0)   --> returns 0
assertEquals(0,
Evaluator.getNumberResult("atan2(atan2(0, 0), atan2(0, 0))", exerciseVariableMap, fillInVariableMap),
0.0001);
fail();
}


@Test(expected = FunctionInvalidArgumentException.class)
'''JACK3:'''
public void testAtan2WithExpression2() {
atan2(0,0)   --> returns ''NaN''
assertEquals(0, Evaluator.getNumberResult("atan2(atan2(0, 0), atan2(0, atan2(0, 0)))", exerciseVariableMap,
fillInVariableMap), 0.0001);
fail();
}


@Test(expected = FunctionInvalidArgumentTypeException.class)
==== Benutzung mit Variablen ====
public void testAtan2WithONECharacter() {
Evaluator.getNumberResult("atan2(a, a)", exerciseVariableMap, fillInVariableMap);
fail();
}


@Test(expected = FunctionInvalidArgumentTypeException.class)
atan2([var=a], [var=b])
public void testAtan2WithEmptyStringArguments() {
atan2([var=a], 0)
Evaluator.getNumberResult("atan2('', '')", exerciseVariableMap, fillInVariableMap);
atan2(1, [var=b])
fail();
}


@Test(expected = FunctionInvalidNumberOfArgumentsException.class)
==== Benutzung mit studentischen Eingaben ====
public void testAtan2WithEmptyArgument() {
Evaluator.getNumberResult("atan2()", exerciseVariableMap, fillInVariableMap);
fail();
}


@Test(expected = UndefinedExerciseVariableException.class)
'''Jack2:'''
public void testAtan2WithoutExerciseVariable() {
atan2([pos=1],[pos=2])
Evaluator.getNumberResult("atan2([var=j], [var=j])", exerciseVariableMap, fillInVariableMap);
atan2([pos=1], 0)
fail();
atan2(1, [pos=2])
}
atan2([var=a], [pos=2])
atan2([pos=1], [var=b])


@Test(expected = UndefinedFillInVariableException.class)
'''Jack3:'''
public void testAtan2WithoutInput() {
atan2([input=field1], [input=field2])
Evaluator.getNumberResult("atan2([pos=42], [pos=42])", exerciseVariableMap, fillInVariableMap);
atan2([input=field1], 0)
fail();
atan2(1, [input=field2])
}
atan2([var=a], [input=field2])
</syntaxhighlight>
atan2([input=field1], [var=b])


===Hinweise===
===Hinweise===
* Diese Funktion wird nicht ausgerechnet, außer es gibt eine genaue Repräsentation (z.B. Pi oder eine Ganzzahl). Soll das Ergebnis gerundet ausgegeben werden, muss eine Rundungsfunktion oder die [[Approx|Approx-Funktion]] genutzt werden.
* Wenn Variablen genutzt werden muss darauf geachtet werden, dass diese die Voraussetzung erfüllen.
* Wenn die Eingabe der Studierenden genutzt wird muss auch hier darauf geachtet werden, dass die Voraussetzungen erfüllt sind und ob diese an der Stelle genutzt werden können.
* Wenn die Konstante Pi genutzt werden soll muss [[constPi|constPi()]] verwendet werden.
* Die Funktion [[toDegree|toDegree(x)]] wandelt den Radiant-Werte x in Grad um.
* Die Funktion [[toRadian|toRadian(x)]] wandelt den Grad-Wert x in Radiant um.


[[Kategorie:Evaluatorfunktion]]
[[Kategorie:Math-Evaluatorfunktion]][[category:Trigonometrische Funktionen]][[Kategorie:JACK2]][[Kategorie:JACK3]]

Aktuelle Version vom 15. April 2024, 13:26 Uhr

Zugehörige Evaluatoren

  • MathEvaluator

Beschreibung

Der Arkustangens 2 wird durch die Funktion atan2 beschrieben. Sie erwartet zwei Parameter und gibt einen Wert zurück.

Syntax

atan2(Gleitkommazahl zahl1,Gleitkommazahl zahl2)

Parameter

  • zahl1 - der x-Wert der kartesischen Koordinaten
  • zahl2 - der y-Wert der kartesischen Koordinaten

Return Value

  • Gibt den Wert des Arkustangens 2 an der Stelle zurück.

Beispiele

Standardfälle

atan2(1, 0)    --> returns \(\frac{1}{2} * \pi\)
JACK2:
atan2(0, 0)    --> returns 0
JACK3:
atan2(0,0)    --> returns NaN

Benutzung mit Variablen

atan2([var=a], [var=b])
atan2([var=a], 0)
atan2(1, [var=b])

Benutzung mit studentischen Eingaben

Jack2:
atan2([pos=1],[pos=2])
atan2([pos=1], 0)
atan2(1, [pos=2])
atan2([var=a], [pos=2])
atan2([pos=1], [var=b])
Jack3:
atan2([input=field1], [input=field2])
atan2([input=field1], 0)
atan2(1, [input=field2])
atan2([var=a], [input=field2])
atan2([input=field1], [var=b])

Hinweise

  • Diese Funktion wird nicht ausgerechnet, außer es gibt eine genaue Repräsentation (z.B. Pi oder eine Ganzzahl). Soll das Ergebnis gerundet ausgegeben werden, muss eine Rundungsfunktion oder die Approx-Funktion genutzt werden.
  • Wenn Variablen genutzt werden muss darauf geachtet werden, dass diese die Voraussetzung erfüllen.
  • Wenn die Eingabe der Studierenden genutzt wird muss auch hier darauf geachtet werden, dass die Voraussetzungen erfüllt sind und ob diese an der Stelle genutzt werden können.
  • Wenn die Konstante Pi genutzt werden soll muss constPi() verwendet werden.
  • Die Funktion toDegree(x) wandelt den Radiant-Werte x in Grad um.
  • Die Funktion toRadian(x) wandelt den Grad-Wert x in Radiant um.