Ableitungen

Diese Simulation berechnet eine Basisfunktion

y = f(x)

für 1000 x- Werte in einem vorgegebenen Intervall.

Wenn h, der Abstand aufeinanderfolgender x-Werte, genügend klein ist, kann die erste Ableitung (Differentialquotient) hinreichend gut durch den ersten Differenzenquotienten approximiert werden.

y(1)(x) = (1/2h) [y(x+h) - y(x-h)]

Die zweite Ableitung wird als Differenzenquotient des ersten Differenzenquotienten angenähert

y(2)(x)= (1/2h) [y(1)(x+h) - y(1)(x-h)] = (1/2h)2 [y(x+2h) - 2y(x) + y(x-1h)]

Dieser Algorithmus wird fortgesetzt und führt zu den weiter unten aufgeführten Codezeilen für die Grundfunktion und die ersten 9 Ableitungen.

Die aufeinanderfolgenden Näherungen bringen natürlich zunehmende Abweichungen. Die Beispiele zeigen, daß sie bereits mit einer gegrenzten Zahl von Schritten recht klein gehalten werden können. Am besten kann man das an der Sinusfunktion beobachten, deren 4te und 8te Ableitung mit der Grundfunktion übereinstimmen sollte.

Code: With s = 1/(2h)

a0[j]=Math.pow(s,0)*y[0][j];

a1[j]=Math.pow(s,1)*(y2[1][j]-y1[1][j]);

a2[j]=Math.pow(s,2)*(y2[2][j]-2*y2[0][j]+y1[2][j]);

a3[j]=Math.pow(s,3)*(y2[3][j]-3*y2[1][j]+3*y1[1][j]-y1[3][j]);

a4[j]=Math.pow(s,4)*(y2[4][j]-4*y2[2][j]+6*y2[0][j]-4*y1[2][j]+y1[4][j]);

a5[j]=Math.pow(s,5)*(y2[5][j]-5*y2[3][j]+10*y2[1][j]-10*y1[1][j]+5*y1[3][j]-y1[5][j]);

a6[j]=Math.pow(s,6)*(y2[6][j]-6*y2[4][j]+15*y2[2][j]-20*y2[0][j]+15*y1[2][j]-6*y1[4][j]+y1[6][j]);

a7[j]=Math.pow(s,7)*(y2[7][j]-7*y2[5][j]+21*y2[3][j]-35*y2[1][j]+35*y1[1][j]-21*y1[3][j]+7*y1[5][j]-y1[7][j]);

a8[j]=Math.pow(s,8)*(y2[8][j]-8*y2[6][j]+28*y2[4][j]-56*y2[2][j]+70*y2[0][j]-56*y1[2][j]+28*y1[4][j]-8*y1[6][j]+y1[8][j]);

a9[j]=Math.pow(s,9)*(y2[9][j]-9*y2[7][j]+36*y2[5][j]-84*y2[3][j]+126*y2[1][j]-126*y1[1][j]+84*y1[3][j]-36*y1[5][j]+9*y1[7][j]-y1[9][j]);

Die Ganzzahlen in den Gleichungen folgen einfachen Regeln. Die Serie kann daher leicht entwickelt und fortgesetzt werden.