- •Лабораторная работа №4
- •1. Введение
- •2. Постановка задачи
- •3. Численное дифференцирование с заданной точностью
- •Модификация алгоритма численного дифференцирования Использование центральной разности (6.3) для приближения производной позволяет проводить вычисления с точность порядка :
- •Результаты вычислений сведем в таблицу:
Лабораторная работа №4
Численное дифференцирование
1. Введение
Решение задач на компьютере условно можно разделить на следующие этапы:
- постановка задачи, её формализация и построение математической модели;
выбор метода решения и разработка алгоритма;
составление программы, её отладка и тестирование;
вычисления, анализ результатов расчета и документирование.
На всех этапах решения задачи на компьютере возникают погрешности, искажающие результаты вычислений. Ошибки результата будут складываться из:
неточности используемой математической модели;
погрешности исходных данных;
погрешности используемого приближенного метода;
погрешности округления и выполнения арифметических операций.
Если в модели не учтены какие-либо важные черты рассматриваемой задачи, то она может внести существенные погрешности. Погрешность математической модели связана с принятыми допущениями, упрощающими решаемую задачу. Кроме того, важно правильно учитывать область применения модели.
Исходные данные задачи часто являются основным источником погрешности. Эти погрешности не могут быть уменьшены в процессе решения задачи. Следует стремиться к тому, чтобы все исходные данные были примерно одинаковой точности.
Погрешность метода связана, например, с тем, что при решении задачи обычно производную заменяют разностью, интеграл – суммой или бесконечный итерационный процесс обрывают после некоторого конечного числа итераций. При выборе метода вычисления и построении алгоритма погрешность можно регулировать и, поэтому стремятся довести её до величины, в несколько раз меньшей погрешности исходных данных. Дальнейшее её снижение не приведет к повышению точности результатов, а лишь необоснованно увеличит объем вычислений.
Из-за ограниченности разрядной сетки при компьютерных вычислениях неизбежны погрешности округления. В отличие от ручных коротких вычислений, в длинных компьютерных расчетах эти ошибки могут накапливаться. Иногда погрешности округлений в сочетании с плохо организованным алгоритмом могут сильно исказить результаты. В зависимости от реализуемого алгоритма, ошибки округления могут либо расти, либо уменьшаться. Поэтому очень важно использовать, так называемые, устойчивые алгоритмы, в которых ошибки округления не накапливаются.
В данной работе, на примере задачи численного дифференцирования, обсудим, с одной стороны, вопросы, связанные с точностью вычислений, а с другой, продемонстрируем различные этапы создания программного продукта.
2. Постановка задачи
По определению, производной функции называется предел отношения приращения функциик приращению аргументапри его стремлении к нулю:
(6.1)
В численных расчетах значение шага полагают равным некоторому конечному числу и для вычисления производной используют приближение производной отношением конечных разностей:
, (6.2)
где введены следующие обозначения ,,- узлы, в которых ищется значение производной. Выражение (6.2) представляет собой приближение производной правой конечной разностью. Можно записать приближение с помощью центральных разностей:
(6.3)
Такая аппроксимация производной имеет второй порядок точности .
Составим несложную программу для приближенного вычисления производных и проведем расчеты для разных значений шага h. В качестве теста выберем функцию.
function f(x:real):real;
begin f:=exp(x) end;
function Dr(x,h:real):real;
begin Dr:=(f(x+h)-f(x))/h end;
function D(x,h:real):real;
begin D:=0.5*(f(x+h)-f(x-h))/h end;
var x,y,h:real; k:integer;
begin
h:=1; x:=1.0; y:=f(x);
for k:=1 to 10 do
begin
h:=0.1*h;
writeln(k:3,’ ‘,h:12:10, ‘ ‘,
Dr(x,h):12:8,’ ‘, abs(Dr(x,h)-y):12:10,
D (x,h):12:8,’ ‘, abs(D (x,h)-y):12:10)
end;
readln
end.
Уменьшая величину шага на порядок, вычислим приближение к производной с помощью правой и центральной конечных разностей и параллельно ошибки, которые при этом возникают. Табличное значение производной с точностью до девяти знаков после запятой равно . Результаты расчетов сведены в следующую таблицу:
k h Dr(x,h) abs(Dr – y) D(x,h) abs(D – y)
1 0.1000000000 2.85884195 0.1405601265 2.72281456 0.0045327355
2 0.0100000000 2.73191866 0.0136368279 2.71832713 0.0000453051
3 0.0010000000 2.71964142 0.0013595946 2.71828228 0.0000004530
4 0.0001000000 2.71841775 0.0001359167 2.71828183 0.0000000018
5 0.0000100000 2.71829558 0.0000137534 2.71828176 0.0000000709
6 0.0000010000 2.71828685 0.0000050223 2.71828139 0.0000004347
7 0.0000001000 2.71829776 0.0000159362 2.71827957 0.0000022537
8 0.0000000100 2.71866156 0.0003797341 2.71829776 0.0000159362
9 0.0000000010 2.72120815 0.0029263192 2.71938916 0.0011073298
10 0.0000000001 2.72848411 0.0102022769 2.71029421 0.0079876172
Проанализировав приведенные данные можно сделать следующие выводы:
приближение центральной разность дает лучшие результаты, чем приближение производной правой разностью;
с уменьшением шага hпогрешность приближения производной конечной разностью сначала уменьшается, а затем растет, т.е. имеется оптимальное значение величины шагаh, так что дальнейшее её уменьшение теряет смысл.