\( \newcommand{\br}[1]{\left( #1\right)} \newcommand{\logpar}[1]{\log\left( #1\right)} \newcommand{\cospar}[1]{\cos\left( #1\right)} \newcommand{\sinpar}[1]{\sin\left( #1\right)} \newcommand{\tanpar}[1]{\tan\left( #1\right)} \newcommand{\arcsinpar}[1]{\sin^{-1}\!\left( #1\right)} \newcommand{\arccospar}[1]{\cos^{-1}\!\left( #1\right)} \newcommand{\arctanpar}[1]{\tan^{-1}\!\left( #1\right)} \newcommand{\asin}[1]{\sin^{-1}\! #1} \newcommand{\acos}[1]{\cos^{-1}\! #1} \newcommand{\atan}[1]{\tan^{-1}\! #1} \newcommand{\asinh}[1]{\sinh^{-1}\! #1} \newcommand{\acosh}[1]{\cosh^{-1}\! #1} \newcommand{\atanh}[1]{\tanh^{-1}\! #1} \newcommand{\logten}[1]{\log_{10}\! #1} \definecolor{explaination}{RGB}{0, 166, 226} \newcommand{\ubrace}[2][u]{ { \color{explaination}{\underbrace{ {\color{black}{#2}} }_{#1}} } } \newcommand{\obrace}[2][u]{ { \color{explaination}{\overbrace{ {\color{black}{#2}} }^{#1}} } } \definecolor{highlight}{RGB}{181, 41, 118} \newcommand{\xplain}[1]{{ \textcolor{explaination} { \footnotesize{ #1 \newline}}}} \newcommand{\hilite}[1]{{ \textcolor{highlight} { { #1 }}}} \definecolor{lightergray}{gray}{.675} \newcommand{\hide}[1]{{ \textcolor{lightergray} { \footnotesize{ #1 \newline}}}} \newcommand{\mth}[1]{ { \textcolor{black} { { \small #1 } } } } \)

Übung: Kettenregel

generateFunction("x") new CalcFunctions[randRange(1, CalcFunctions.length - 1)](INNER.f) ( ( OUTER.f[0] === '^' && OUTER.f[1] === 'e' && INNER.f[0] === 'ln' ) || ( OUTER.f[0] === 'ln' && INNER.f[0] === '^' && INNER.f[1] === 'e' ) ) ? 'x' : null
randFromArray( INNER.wrongs ) randFromArray( OUTER.wrongs )
randFromArray( INNER.wrongs ) randFromArray( OUTER.wrongs )
['*', OUTER.ddxF, INNER.ddxF] ( ( OUTER.f[0] === '^' && OUTER.f[1] === 'e' && INNER.f[0] === 'ln' ) || ( OUTER.f[0] === 'ln' && INNER.f[0] === '^' && INNER.f[1] === 'e' ) ) ? [['frac', 'x', 'x'], '1'] : [] DERIVATIVE_SIMPLIFICATIONS.length === 0 ? expr(UNSIMPLIFIED_DERIVATIVE) : expr(DERIVATIVE_SIMPLIFICATIONS[DERIVATIVE_SIMPLIFICATIONS.length - 1]) funcNotation("x")

Sei NOTATION.f = OUTER.fText

NOTATION.ddxF = {?}

DERIVATIVE

  • expr(["*", OUTER.ddxF, randFromArray(INNER.wrongs)])
  • expr(["*", randFromArray(OUTER.wrongs), INNER.ddxF])
  • expr(["*", OUTER_WRONG_1, INNER_WRONG_1])
  • expr(["*", OUTER_WRONG_2, INNER_WRONG_1])
  • expr(["+", randFromArray(OUTER.wrongs), randFromArray(INNER.wrongs)])
  • expr(["+", randFromArray(OUTER.wrongs), randFromArray(INNER.wrongs)])
  • expr(OUTER.ddxF)
  • expr(randFromArray(OUTER.wrongs))
  • expr(randFromArray(OUTER.wrongs))
  • 1

NOTATION.ddxF = ( Ableiitung von OUTER.fText nach INNER.fText ) \cdot ( derivative of INNER.fText with respect to x)

Die Ableitung von OUTER.fText nach INNER.fText ist OUTER.ddxFText.

Die Ableitung von INNER.fText nach x ist INNER.ddxFText.

Damit ist die Ableitung bis jetzt expr(UNSIMPLIFIED_DERIVATIVE), aber der Ausdruck kann noch weiter vereinfacht werden.

expr( i === 0 ? UNSIMPLIFIED_DERIVATIVE : DERIVATIVE_SIMPLIFICATIONS[i - 1] ) wird zu expr(newexpr) vereinfacht.

Daher ist NOTATION.ddxF = DERIVATIVE.

Übrigens: hätten wir die Funktion vereinfacht bevor wir die Ableitung bestimmt haben, so hätten wir die Antwort schneller bekommen: OUTER.fText wird zu expr(PRE_SIMPLIFICATION) vereinfacht, und \frac{d}{dx}(expr(PRE_SIMPLIFICATION)) ist DERIVATIVE.