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

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

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

Если

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

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

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

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

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

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

Где D x=xx0,

D y=f(x0+ D x)f(x0)

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

где (D x)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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: