Я думаю, что вы ищете производную, рассчитанную в точке.
Если это так, то здесь есть простой способ сделать это. Вам нужно знать производную в точке, скажем a . Дается пределом разностного отношения для h-> 0:
Вам действительно нужно реализовать функцию предела. Итак, вы:
- Определите эпсилон, сделайте его меньше, чтобы быть более точным, больше, чтобы быть быстрее
- Рассчитайте коэффициент разности в начальном h, предположим, что h = 0,01, сохраните его в f1
Теперь в цикле DO-WHILE:
1 - разделите h на 2 (или на 10, важно сделать его меньше)
2 - снова вычислите коэффициент разности с новым значением h, сохраните его в f2
3 набора diff = abs (f2-f1)
4- назначить f1 = f2
5 - повторить с точки 1 while (diff> epsilon)
- Наконец, вы можете вернуть f1 (или f2) как значение вашего f '(a)
Помните:
Вы предполагаете, что функция дифференцируема в a .
Каждый результат, который вы получите, будет неправильным из-за ошибок конечного десятичного знака, которые ваш компьютер может обработать, от этого никуда не деться.
Пример на python:
def derive(f, a, h=0.01, epsilon = 1e-7):
f1 = (f(a+h)-f(a))/h
while True: # DO-WHILE
h /= 2.
f2 = (f(a+h)-f(a))/h
diff = abs(f2-f1)
f1 = f2
if diff<epsilon: break
return f2
print "derivatives in x=0"
print "x^2: \t\t %.6f" % derive(lambda x: x**2,0)
print "x:\t\t %.6f" % derive(lambda x: x,0)
print "(x-1)^2:\t %.6f" % derive(lambda x: (x-1)**2,0)
print "\n\nReal values:"
print derive(lambda x: x**2,0)
print derive(lambda x: x,0)
print derive(lambda x: (x-1)**2,0)
Выход:
derivatives in x=0
x^2: 0.000000
x: 1.000000
(x-1)^2: -2.000000
Real values:
7.62939453125e-08
1.0
-1.99999992328
В первый раз, когда я получил "точное" значение "из-за использования только первых 6 цифр результата, обратите внимание, что я использовал 1e-7 в качестве эпсилона. После этого печатаются РЕАЛЬНЫЕ вычисленные значения, и они, очевидно, математически неправильно. Выбор размера эпсилона зависит от того, насколько точными должны быть ваши результаты.