Паскаль. Основы программирования


           

и точности вычисления не менее


Оценка погрешности и точности вычисления не менее серьезный и сложный процесс, чем само приближенное вычисление.

Так для оценки погрешности дифференцирования могут быть применены следующие формулы:

                                    
                            (2)

где предполагается, что функция f(x) дифференцируемая n + 1 раз, а точка
 - некоторое промежуточное значение между x0 - точкой, в которой находится производная и точками (x0 - 2dx), (x0 - dx), (x0 + dx), (x0 + 2dx), ... из заданного промежутка [a, b].

На практике f

(n+1)(c) оценивать непросто, поэтому при малых dx приближенно полагают:



и тогда получается следующая формула

          
       (3)

Мы будем пользоваться формулой (2), а  впоследствии и формулой (3), в зависимости от конкретной задачи и тех сложностей, которые могут возникнуть при составлении программ.

Используя эти формулы, составим функцию для вычисления первой производной. Точность вычисления eps задается пользователем, а первоначальная величина промежутка dx устанавливается 1, а затем, для уточнения вычисления - делится на 2. Впрочем, читатель может предложить другие способы изменения промежутка dx, когда значительно быстрее достигается вычисление производной с заданной степенью точности.

{ Вычисление 1-й производной и опред. точности ее вычислен.}

{ derivative - производная }

Function derivat1(x0, eps : real) : real;

      var

         dx, dy, dy2 : real;

      begin

          dx := 1;

          repeat

             dx := dx/2;

             dy := fx(x0 + dx/2) - fx(x0 - dx/2);

             dy2 := fx(5*x0/4 + dx) - 2*fx(5*x0/4);

             dy2 := dy2 + fx(5*x0/4 - dx)

         until abs(dy2/(2*dx)) < eps;

        derivat1 := dy/dx

      end;

Здесь, для определения точности вычисления, используется вторая производная в точке
 dy2 := fx(5*x0/4 + dx) - 2*fx(5*x0/4) + fx(5*x0/4 - dx);

Запись ее вычисления выполнена в две строки только из-за лучшей наглядности написания программы.

Возможен и другой вариант написания функции с использованием формулы (3) для оценки точности вычисления.

Содержание  Назад  Вперед