Log: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
 
(14 dazwischenliegende Versionen von 5 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([[Gleitkommazahl]] basis, [[Gleitkommazahl]] zahl)
oder
  log([[Gleitkommazahl]] zahl)
  log([[Gleitkommazahl]] zahl)


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


Zeile 13: Zeile 19:
=== 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])
@BeforeClass
public static void beforeTest() {
log([var=a], [pos=4])
fillInVariableMap.put(1, OMConverter.toObject("<OMOBJ><OMI>5</OMI></OMOBJ>"));
fillInVariableMap.put(2, OMConverter.toObject("<OMOBJ><OMF dec=\"13.7465\"/></OMOBJ>"));
 
exerciseVariableMap.put("a", OMConverter.toObject("<OMOBJ><OMI>5</OMI></OMOBJ>"));
exerciseVariableMap.put("b", OMConverter.toObject("<OMOBJ><OMF dec=\"13.7465\"/></OMOBJ>"));
}
 
@Test
public void testLog1() {
assertEquals(Math.log(100), Evaluator.getNumberResult("log(100)", exerciseVariableMap, fillInVariableMap),
0.0001);
}
 
@Test
public void testLog2() {
assertEquals(Math.log(197), Evaluator.getNumberResult("log(197)", exerciseVariableMap, fillInVariableMap),
0.0001);
}
 
@Test
public void testLog3() {
assertEquals(Math.log(100), Evaluator.getNumberResult("log('100')", exerciseVariableMap, fillInVariableMap),
0.0001);
}
 
@Test
public void testLog4() {
assertEquals(Math.log(197), Evaluator.getNumberResult("log('197')", exerciseVariableMap, fillInVariableMap),
0.0001);
}
 
@Test
public void testLogWithInput1() {
assertEquals(Math.log(5), Evaluator.getNumberResult("log([pos=1])", exerciseVariableMap, fillInVariableMap),
0.0001);
}
 
@Test
public void testLogWithInput2() {
assertEquals(Math.log(13.7465),
Evaluator.getNumberResult("log([pos=2])", exerciseVariableMap, fillInVariableMap), 0.0001);
}
 
@Test
public void testLogWithVariables1() {
assertEquals(Math.log(5), Evaluator.getNumberResult("log([var=a])", exerciseVariableMap, fillInVariableMap),
0.0001);
}
 
@Test
public void testLogWithVariables2() {
assertEquals(Math.log(13.7465),
Evaluator.getNumberResult("log([var=b])", exerciseVariableMap, fillInVariableMap), 0.0);
}
 
@Test
public void testLogWithExpressions1() {
assertEquals(Math.log(Math.log(12)),
Evaluator.getNumberResult("log(log(12))", exerciseVariableMap, fillInVariableMap), 0.0001);
}
 
@Test
public void testLogWithExpressions2() {
assertEquals(Math.log(Math.log(Math.log(12))),
Evaluator.getNumberResult("log(log(log(12)))", exerciseVariableMap, fillInVariableMap), 0.0001);
}
 
@Test
public void testLogWithPointNumbers1() {
assertEquals(Math.log(1.0), Evaluator.getNumberResult("log(1.0)", exerciseVariableMap, fillInVariableMap),
0.0001);
}
 
@Test
public void testLogWithPointNumbers2() {
assertEquals(Math.log(.1), Evaluator.getNumberResult("log(0.1)", exerciseVariableMap, fillInVariableMap),
0.0001);
}
 
@Test
public void testLogWithPointNumbers3() {
assertEquals(Math.log(.1234), Evaluator.getNumberResult("log(0.1234)", exerciseVariableMap, fillInVariableMap),
0.0001);
}
 
@Test(expected = FunctionInvalidArgumentException.class) // NaN
public void testLogAtDefinition1() {
Evaluator.getNumberResult("log(-1)", exerciseVariableMap, fillInVariableMap);
fail();
}
 
@Test(expected = FunctionInvalidArgumentException.class) // NaN
public void testLogAtDefinition2() {
Evaluator.getNumberResult("log(-0.1)", exerciseVariableMap, fillInVariableMap);
fail();
}
 
@Test(expected = FunctionInvalidArgumentException.class) // NaN
public void testLogAtDefinition3() {
Evaluator.getNumberResult("log(0)", exerciseVariableMap, fillInVariableMap);
fail();
}
 
@Test(expected = FunctionInvalidArgumentTypeException.class)
public void testLogWithWrongInputCharacter() {
Evaluator.getNumberResult("log(a)", exerciseVariableMap, fillInVariableMap);
fail();
}
 
@Test(expected = FunctionInvalidNumberOfArgumentsException.class)
public void testLogWithTwoArguments() {
Evaluator.getNumberResult("log(2, 1)", exerciseVariableMap, fillInVariableMap);
fail();
}
 
@Test(expected = FunctionInvalidNumberOfArgumentsException.class)
public void testLogWithThreeArguments() {
Evaluator.getNumberResult("log(1, 23, 4)", exerciseVariableMap, fillInVariableMap);
fail();
}
 
@Test(expected = UndefinedExerciseVariableException.class)
public void testLogWithMissingExerciseVariable() {
Evaluator.getNumberResult("log('[var=j]')", exerciseVariableMap, fillInVariableMap);
fail();
}


@Test(expected = UndefinedFillInVariableException.class)
'''JACK3:'''
public void testLogWithMissingInput() {
log(10, [input=field1])
Evaluator.getNumberResult("log('[pos=42]')", exerciseVariableMap, fillInVariableMap);
fail();
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, 08: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)}\)