Вычисление производной по определению

Численное дифференцирование

 

Производной функции y=f(x) в точке x0 называется предел отношения приращения функции Dy к приращению аргумента Dx при стремлении Dx к нулю: .

Если

· производную от функции в данной точке аналитически найти не удается либо

· вычисление производной слишком громоздко или занимает очень много времени либо

· функция f(x) задана на конечном множестве точек {xi} (i=0,1,…,n),

то необходимо перейти к численному дифференцированию.

 

 

Вычисление производной по определению применяется, когда известно аналитическое выражение функции y=f(x).

Пусть функция y=f(x) определена в некоторой окрестности точки x0 и имеет производную в этой точке, т.е. ,

Где Dx=xx0 ,

Dy=f(x0+Dx)f(x0)

Значение производной функции y=f(x) в точке x0 получим, рассматривая последовательность ,

где (Dx)0 – некоторое начальное приращение аргумента;

a – некоторое число a>1;

n = 0, 1, …


Значение производной примет вид: ,

где , откуда получим: .

Оценим точность приближения.

Пусть функция y=f(x) имеет непрерывную производную до второго порядка включительно в окрестности точки x0.

По формуле Тейлора ,

откуда ,

где – максимальное значение производной на (x, x0).

Окончательно получим: , где

Для достижения заданной степени точности ε при вычислении производной можно использовать неравенство: и, соответственно, последний результат принимают в качестве производной функции, вычисленной в точке x с заданной степенью точности.

Блок-схема вычисления производной по определению:

       
   
 
 

 


Программа вычисления производной по определению

 

program deriveFunction;

uses Crt;

const a=10;

var

deltaX, der1, der2, e, e1, x : real;

 

function F(x : real): real;

begin

f:=sin(x);

end;

 

{ *** Вычисление производной по определению *** }

function derivF(x, deltaX : real): real;

begin

derivF:=(f(x+deltaX)-f(x))/deltaX;

end;

 

BEGIN

ClrScr;

writeln('Введите значение х и точность epsilon');

readln(x,e);

deltaX:=0.1; der1:=derivF(x,deltaX);

repeat

deltaX:=deltaX/a;

der2:=derivF(x,deltaX);

e1:=abs(der1-der2);

der1:=der2;

until e1<e;

writeln('x = ',x:4:2, ' производная = ',der2:10:6);

writeln('Погрешность приближения = ', e1);

readln

END.

 

Введите значение х и точность epsilon

0 0.0001

x = 0.00 производная = 1.000000

Погрешность приближения = 1.6499916455E-05

 

Введите значение х и точность epsilon

0.76 0.0001

x = 0.76 производная = 0.724833

Погрешность приближения = 3.0968294595E-05