Atan2: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
 
(17 dazwischenliegende Versionen von 6 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\)
 
'''JACK2:'''
atan2(0, 0)    --> returns 0
 
'''JACK3:'''
atan2(0,0)    --> returns ''NaN''
 
==== Benutzung mit Variablen ====


====JUnit Tests====
atan2([var=a], [var=b])
<span class="mw-customtoggle-myDivision">[Anzeigen]</span>
atan2([var=a], 0)
<syntaxhighlight lang="java" class="mw-collapsible mw-collapsed" id="mw-customcollapsible-myDivision">
atan2(1, [var=b])
@Before
public void beforeTest() {
  placeFillInVariable(1, OMParser.parse("0"));
  placeFillInVariable(2, OMParser.parse("1"));
  placeExerciseVariable("a", OMParser.parse("0"));
  placeExerciseVariable("b", OMParser.parse("1"));
}
@Test
public void testAtan2() {
  assertTrue(0 == getEvaluator().getNumberResult("atan2('0','0')"));
  assertTrue(0 == getEvaluator().getNumberResult("atan2('0','0.5')"));
  assertTrue(0.7853981633974483 == getEvaluator().getNumberResult("atan2('0.5','0.5')"));
  assertTrue(0.7853981633974483 == getEvaluator().getNumberResult("atan2('.5','.5')"));
  assertTrue(PI/2 == getEvaluator().getNumberResult("atan2('.5','0')"));
}
@Test
public void testAtan2AtDefinition(){
  assertTrue(PI == getEvaluator().getNumberResult("atan2(0, -1)"));
  assertTrue(0 == getEvaluator().getNumberResult("atan2(0, 1)"));
  assertTrue(PI/2 == getEvaluator().getNumberResult("atan2(1, 0)"));
  assertTrue(-PI/2 == getEvaluator().getNumberResult("atan2(-1, 0)"));
}


@Test
==== Benutzung mit studentischen Eingaben ====
public void testAtan2WithInput() {
  assertTrue(0 == getEvaluator().getNumberResult("atan2('0','[pos=1]')"));
  assertTrue(PI/2 == getEvaluator().getNumberResult("atan2('[pos=2]','[pos=1]')"));
}


@Test
'''Jack2:'''
public void testAtan2WithVariables() {
atan2([pos=1],[pos=2])
  assertTrue(0 == getEvaluator().getNumberResult("atan2('[var=a]','0')"));
atan2([pos=1], 0)
  assertTrue(PI/2 == getEvaluator().getNumberResult("atan2('[var=b]','[var=a]')"));
atan2(1, [pos=2])
}
atan2([var=a], [pos=2])
atan2([pos=1], [var=b])
@Test
public void testAtan2WithExpression() {
  assertTrue(0 == getEvaluator().getNumberResult("atan2(atan2(0, 0), atan2(0, 0))"));
  assertTrue(0 == getEvaluator().getNumberResult("atan2(atan2(0, 0), atan2(0, atan2(0, 0)))"));
}


@Test(expected=InvalidCASFunctionArgumentException.class)
'''Jack3:'''
public void testAtan2WithONECharacter() {
atan2([input=field1], [input=field2])
  getEvaluator().getNumberResult("atan2(a, a)");
atan2([input=field1], 0)
}
atan2(1, [input=field2])
atan2([var=a], [input=field2])
@Test(expected=InvalidCASFunctionArgumentException.class)
atan2([input=field1], [var=b])
public void testAtan2WithEmptyStringArguments() {
  getEvaluator().getNumberResult("atan2('', '')");
}
@Test(expected=InvalidCASFunctionArgumentException.class)
public void testAtan2WithEmptyArgument() {
  getEvaluator().getNumberResult("atan2()");
}
@Test(expected=UndefinedExerciseVariableException.class)
public void testAtan2WithoutExerciseVariable() {
  getEvaluator().getNumberResult("atan2([var=j], [var=j])");
}
@Test(expected=UndefinedFillInVariableException.class)
public void testAtan2WithoutInput() {
  getEvaluator().getNumberResult("atan2([pos=42], [pos=42])");
}
</syntaxhighlight>


===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, 12: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.