Вычисление производной по определению
Численное дифференцирование
Производной функции y=f(x) в точке x0 называется предел отношения приращения функции Dy к приращению аргумента Dx при стремлении Dx к нулю: .
Если
· производную от функции в данной точке аналитически найти не удается либо
· вычисление производной слишком громоздко или занимает очень много времени либо
· функция f(x) задана на конечном множестве точек {xi} (i=0,1,…,n),
то необходимо перейти к численному дифференцированию.
Вычисление производной по определению применяется, когда известно аналитическое выражение функции y=f(x).
Пусть функция y=f(x) определена в некоторой окрестности точки x0 и имеет производную в этой точке, т.е. ,
Где Dx=x–x0 ,
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