Derive: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(15 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
===Zugehörige Evaluatoren===
*'''MathEvaluator'''
===Beschreibung===
===Beschreibung===
Die Funktion ''derive'' leitet eine Funktion ab. Sie benötigt zwei Strings, den Ausdruck der abgeleitet werden soll und die Variable nach der abgeleitet werden soll. Die Funktion gibt die Ableitung zurück.
Die Funktion ''derive'' leitet eine Funktion ab. Sie benötigt zwei Strings, den Ausdruck der abgeleitet werden soll und die Variable nach der abgeleitet werden soll. Die Funktion gibt die Ableitung zurück.


===Syntax===
===Syntax===
  derive(String term, String variable)
  derive([[Ausdruck]] term, [[Zeichen]] variable)


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


===Beispiele===
===Beispiele===
derive('x^2+2x+3','x')    --> returns '2x+2'
==== Standardfälle ====


  derive('x^2+2x+3','y')    --> returns '0'
  derive(x^2+2*x+3, x)    --> returns 2*x+2
derive(x^2+2*x+3, y)    --> returns 0


====JUnit Tests====
==== Benutzung mit Variablen ====
<span class="mw-customtoggle-myDivision">[Anzeigen]</span>
derive([var=a], [var=b])
<syntaxhighlight lang="java" class="mw-collapsible mw-collapsed" id="mw-customcollapsible-myDivision">
@Before
public void beforeTest() {
  placeFillInVariable(1, OMParser.parse("x"));
  placeFillInVariable(2, OMParser.parse("0.5"));
  placeExerciseVariable("a", OMParser.parse("x"));
  placeExerciseVariable("b", OMParser.parse("0.5"));
}
@Test
public void testDerive() {
  assertTrue("'2*x'".equals(getEvaluator().getResultAsEvaluatorString("derive('x^2','x')")));
  assertTrue("'0'".equals(getEvaluator().getResultAsEvaluatorString("derive('x^2','y')")));
  assertTrue("'2+2*x'".equals(getEvaluator().getResultAsEvaluatorString("derive('x^2 + 2x','x')")));
  assertTrue("'x'".equals(getEvaluator().getResultAsEvaluatorString("derive('0.5*x^2','x')")));
  assertTrue("'x'".equals(getEvaluator().getResultAsEvaluatorString("derive('.5*x^2','x')")));
  assertTrue("'1+2*x'".equals(getEvaluator().getResultAsEvaluatorString("derive('x^2+x+3','x')")));
  assertTrue("'2*x*y^2'".equals(getEvaluator().getResultAsEvaluatorString("derive('(x*y)^2','x')")));
}
@Test
public void testDeriveWithInput() {
  assertTrue("'x'".equals(getEvaluator().getResultAsEvaluatorString("derive('0.5*x^2 + 3','x')")));
  assertTrue("'2+2*x'".equals(getEvaluator().getResultAsEvaluatorString("derive('[pos=1]^2 + 2[pos=1] + 4','x')")));
}
@Test
public void testDeriveWithExpressions(){
  assertTrue("'1'".equals(getEvaluator().getResultAsEvaluatorString("'derive(derive('0.5*x^2', 'x')', 'x'")));
}


@Test
==== Benutzung mit studentischen Eingaben ====
public void testDeriveWithVariables() {
 
  assertTrue("'x'".equals(getEvaluator().getResultAsEvaluatorString("derive('0.5*x^2 + 3','x')")));
derive([input=field1], [input=field2])
  assertTrue("'2+2*x'".equals(getEvaluator().getResultAsEvaluatorString("derive('[var=a]^2 + 2[var=a] + 4','x')")));
derive(x^2+2*x+3, [input=field1])
}
derive([input=field1], x)
@Test
derive([var=a], [pos=1])
public void testDeriveWithONECharacter(){
derive([pos=1], [var=a])
  assertTrue("'1'".equals(getEvaluator().getResultAsEvaluatorString("derive(a, a)")));
}
@Test(expected=InvalidCASFunctionArgumentException.class)
public void testDeriveWithEmptyStringArguments(){
  getEvaluator().getResultAsEvaluatorString("derive('', '')");
}
@Test(expected=InvalidCASFunctionArgumentException.class)
public void testDeriveWithEmptyArgument(){
  getEvaluator().getResultAsEvaluatorString("derive()");
}
@Test(expected=UndefinedExerciseVariableException.class)
public void testDeriveWithoutExerciseVariable() {
  getEvaluator().getResultAsEvaluatorString("derive([var=j], [var=j])");
}
@Test(expected=UndefinedFillInVariableException.class)
public void testDeriveWithoutInput() {
  getEvaluator().getResultAsEvaluatorString("derive([pos=42], [pos=42])");
}
</syntaxhighlight>


===Hinweise===
===Hinweise===
* Bei der Verwendung müssen Mal-Zeichen und ähnliches immer ausgeschrieben 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.
* Die Funktion ''derive'' kann z.B. mit der Funktion [[equalsExpr]] abgefragt werden:
* Die Funktion ''derive'' kann z.B. mit der Funktion [[equalsExpr]] abgefragt werden:
equalsExpr(derive('x^2+x+3','x'),'2x+1')


[[Kategorie:Evaluatorfunktion]]
equalsExpr(derive('x^2+x+3',x),2*x+1)
 
[[Kategorie:Math-Evaluatorfunktion]][[Kategorie:Ausdruckfunktionen]][[Kategorie:JACK2]][[Kategorie:JACK3]]

Aktuelle Version vom 18. November 2025, 13:09 Uhr

Zugehörige Evaluatoren

  • MathEvaluator

Beschreibung

Die Funktion derive leitet eine Funktion ab. Sie benötigt zwei Strings, den Ausdruck der abgeleitet werden soll und die Variable nach der abgeleitet werden soll. Die Funktion gibt die Ableitung zurück.

Syntax

derive(Ausdruck term, Zeichen variable)

Parameter

  • term - die Funktion die abgeleitet werden soll
  • variable - die Variable nach der abgeleitet werden soll

Return Value

  • Gibt den Wert zurück, der die abgeleitete Funktion darstellt.

Beispiele

Standardfälle

derive(x^2+2*x+3, x)    --> returns 2*x+2

derive(x^2+2*x+3, y)    --> returns 0

Benutzung mit Variablen

derive([var=a], [var=b])

Benutzung mit studentischen Eingaben

derive([input=field1], [input=field2])
derive(x^2+2*x+3, [input=field1])
derive([input=field1], x)

derive([var=a], [pos=1])
derive([pos=1], [var=a])

Hinweise

  • Bei der Verwendung müssen Mal-Zeichen und ähnliches immer ausgeschrieben 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.
  • Die Funktion derive kann z.B. mit der Funktion equalsExpr abgefragt werden:
equalsExpr(derive('x^2+x+3',x),2*x+1)