Log: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(18 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
===Zugehörige Evaluatoren===
*'''MathEvaluator'''
=== Beschreibung ===
=== Beschreibung ===
Die Funktion ''log'' beschreibt die natürliche Logarithmusfunktion zur Basis <math>e</math>. Die Funktion erwartet eine rationale Zahl und gibt eine rationale Zahl zurück.
Die Funktion ''log'' beschreibt die Logarithmusfunktion zur angegebenen Basis. Der erste Parameter stellt die Basis dar. Der zweite Parameter ist eine rationale Zahl. Zu diesem zweiten Parameter wird der Logarithmus berechnet. Die Rückgabe ist eine rationale Zahl. Wenn keine Basis angegeben ist, wird der Logarithmus zur Basis 10 genommen.


=== Syntax ===
=== Syntax ===
  log(double zahl)
  log([[Gleitkommazahl]] basis, [[Gleitkommazahl]] zahl)
oder
log([[Gleitkommazahl]] zahl)


=== Parameter ===
=== Parameter ===
* '''zahl''' - rationale Zahl, auf die die Logarithmusfunktion angewendet wird
* '''basis''' - [[Gleitkommazahl]], Basis zu der die Logarithmusfunktion arbeitet
* '''zahl''' - [[Gleitkommazahl]], auf die die Logarithmusfunktion angewendet wird


=== Return Value ===
=== Return Value ===
* Gibt eine rationale Zahl zurück
* Gibt eine [[Gleitkommazahl]] zurück


=== Beispiele ===
=== Beispiele ===
==== Standardfälle ====
==== Standardfälle ====
  log(100)  --> returns 4.605170185988092
  log(e, 100) --> returns \(\frac{2}{ln(e)}*ln(10)\)
  log(1)   --> returns 0
log(10, 1)  --> returns 0
  log(2, 1) --> returns 0
log(1)  --> returns 0


==== Benutzung von Variablen ====
==== Benutzung mit Variablen ====
log([pos=1])
  log([var=a])
  log([var=a])


====JUnit Tests====
==== Benutzung mit studentischen Eingaben ====
<span class="mw-customtoggle-myDivision">[Anzeigen]</span>
'''JACK2:'''
<syntaxhighlight lang="java" class="mw-collapsible mw-collapsed" id="mw-customcollapsible-myDivision">
log(10, [pos=1])
@Before
public void beforeTest(){
log([var=a], [pos=4])
  placeExerciseVariable("a", OMParser.parse("5"));
  placeExerciseVariable("b", OMParser.parse("13.7465"));
  placeFillInVariable(5, OMParser.parse("5"));
  placeFillInVariable(13, OMParser.parse("13.7465"));
}
 
@Test
public void testLog(){
  assertTrue(Math.log(100) == getEvaluator().getNumberResult("log(100)"));
  assertTrue(Math.log(197) == getEvaluator().getNumberResult("log(197)"));
  assertTrue(Math.log(100) == getEvaluator().getNumberResult("log('100')"));
  assertTrue(Math.log(197) == getEvaluator().getNumberResult("log('197')"));
}
 
@Test
public void testLogWithInput(){
  assertTrue(Math.log(5) == getEvaluator().getNumberResult("log([pos=5])"));
  assertTrue(Math.log(13.7465) == getEvaluator().getNumberResult("log([pos=13])"));
}
 
@Test
public void testLogWithVariables(){
  assertTrue(Math.log(5) == getEvaluator().getNumberResult("log([var=a])"));
  assertTrue(Math.log(13.7465) == getEvaluator().getNumberResult("log([var=b])"));
}
 
@Test
public void testLogWithExpressions(){
  assertTrue(Math.log(Math.log(12)) == getEvaluator().getNumberResult("log(log(12))"));
  assertTrue(Math.log(Math.log(Math.log(12))) == getEvaluator().getNumberResult("log(log(log(12)))"));
}
 
@Test
public void testLogWithPointNumbers(){
  assertTrue(Math.log(1.0) == getEvaluator().getNumberResult("log(1.0)"));
  assertTrue(Math.log(.1) == getEvaluator().getNumberResult("log(.1)"));
  assertTrue(Math.log(.1234) == getEvaluator().getNumberResult("log(.1234)"));
}
 
@Test
public void testLogAtDefinition(){
  assertTrue("NaN".equals(getEvaluator().getResultAsEvaluatorString("log(-1)")));
  assertTrue("NaN".equals(getEvaluator().getResultAsEvaluatorString("log(-.1)")));
  assertTrue("NaN".equals(getEvaluator().getResultAsEvaluatorString("log(0)")));
}
 
@Test(expected=InvalidEvaluatorFunctionArgumentException.class)
public void testLogWithWrongInputCharacter(){
  getEvaluator().getNumberResult("log(a)");
}
 
@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testLogWithTwoArguments(){
  getEvaluator().getNumberResult("log(2, 1)");
}
 
@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testLogWithThreeArguments(){
  getEvaluator().getNumberResult("log(1, 23, 4)");
}
 
@Test(expected=UndefinedExerciseVariableException.class)
public void testLogWithMissingExerciseVariable(){
  getEvaluator().getNumberResult("log('[var=j]')");
}


@Test(expected=UndefinedFillInVariableException.class)
'''JACK3:'''
public void testLogWithMissingInput(){
log(10, [input=field1])
  getEvaluator().getNumberResult("log('[pos=42]')");
}
log([var=a], [input=field4])
</syntaxhighlight>


=== Hinweise ===
=== Hinweise ===
* Aufgrund von der Rechengenauigkeit des Computers, wird in jedem Fall eine rationale Zahl zurückgegeben. Sollte der tatsächliche Funktionswert irrational sein, wird entsprechend gerundet.
* 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.
* \(log(a,b) == \frac{log(b)}{log(a)}\)


[[Kategorie:Evaluatorfunktion]]
[[Kategorie:Math-Evaluatorfunktion]][[Kategorie:JACK2]][[Kategorie:JACK3]]

Aktuelle Version vom 17. April 2024, 09:40 Uhr

Zugehörige Evaluatoren

  • MathEvaluator

Beschreibung

Die Funktion log beschreibt die Logarithmusfunktion zur angegebenen Basis. Der erste Parameter stellt die Basis dar. Der zweite Parameter ist eine rationale Zahl. Zu diesem zweiten Parameter wird der Logarithmus berechnet. Die Rückgabe ist eine rationale Zahl. Wenn keine Basis angegeben ist, wird der Logarithmus zur Basis 10 genommen.

Syntax

log(Gleitkommazahl basis, Gleitkommazahl zahl)

oder

log(Gleitkommazahl zahl)

Parameter

  • basis - Gleitkommazahl, Basis zu der die Logarithmusfunktion arbeitet
  • zahl - Gleitkommazahl, auf die die Logarithmusfunktion angewendet wird

Return Value

Beispiele

Standardfälle

log(e, 100) --> returns \(\frac{2}{ln(e)}*ln(10)\)

log(10, 1)   --> returns 0

log(2, 1) --> returns 0

log(1)  --> returns 0

Benutzung mit Variablen

log([var=a])

Benutzung mit studentischen Eingaben

JACK2:
log(10, [pos=1])

log([var=a], [pos=4])
JACK3:
log(10, [input=field1])

log([var=a], [input=field4])

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.
  • \(log(a,b) == \frac{log(b)}{log(a)}\)