Как найти значение второй производной в точке?

есть метод double Function(double x) { return Math.Log10(x) + x - 2; } Для метода хорд (метод нахождения корня нелинейного уравнения) мне нужно найти неподвижный конец из заданного интервала [a,b]. Он ищется по формуле Function(a)*Functiond2(x)>0. Если это условие выполняется, то значит что a - неподвижный конец. Я не могу понять, как найти Functiond2(a)(Functiond2 - подразумевается как вторая производная) не вводя отдельно вручную формулу второй производной функции. Как мне это сделать численно? Я нашел вроде как найти значение первой производной, это по формуле (f(x + dx) - f(x))/dx, где dx=double.MinValue как я понял(или неправильно понял). Помогите пожалуйста.


Ответы (2 шт):

Автор решения: Space Researcher

Производная по определению есть отношение приращения функции к приращению аргумента. То есть (y1-y0)/(x1-x0), получается если вы сделаете так на точке f0, то получите 1 производную точки f0. Для второй производной вам нужны точки f0 и f1, получаете производные в этих точках(f0' и f1') и далее вычисляете так же (f1'-f0')/(x1-x0).

Таким образом напишите функцию, где будет вычислять производная и передавайте ей 2 точки (x0 y0) и (x1 y1) а что это будут за точки - дело ваше хотите туда отправляйте исходную функцию, хотите первую производную, а хотите и вторую:)

f''(x) =( f'(x+dx) - f'(x) )/ dx
→ Ссылка
Автор решения: Harry

Если надо численно, то проще всего

f''(x) = (f(x+dx)-2*f(x)+f(x-dx))/(dx*dx)

Но численное дифференцирование — занятие не самое веселое и очень подверженное ошибкам (представления, округления и т.д., в отличие от численного интегрирования).

Так что выбор подходящего dx должен выполняться с осторожностью: слишком большое — получаем погрешность метода, слишком малое — погрешность округления...

→ Ссылка