
Программная реализация вычислительных алгоритмов
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
емое в формуле (2.1) отбрасывается и является истинной ошибкой метода, в математике это выражение называется остаточным членом. Необходима, конечно, оценка его модуля. Если в основе вычислительного алгоритма лежит приближённый математический метод, то возникает ошибка метода. Очень важно иметь оценки округления и метода.
Ошибка погрешности округления
Оценка погрешности округления производится дублированием раiётов с изменением типа входных данных, её можно произвести достаточно точно, для этого этот способ дублирования: например, дан вещественный тип_1 и выбрали тип_2. Все вычисления проводим с тип_1,а второй ряд вычислений по абсолютно таким же формулам, но все переменные описываются как тип_2; результат единственный с используемым тип_1 - R1, а результат с тип_ 2 - R2. Разность между ними и есть погрешность округления, т.е. R1-R2= . Хотя она не очень точеная, но зато даёт порядок величины.
Оценка ошибки метода численного дифференцирования
Разностные формулы дифференцирования:
(3.1) ,
где h - шаг; - ошибка метода ()
При малых значениях h: чем больше р, тем точнее формула.
Далее используем следующий приём:
(4.1)
где и ненамного отличаются, тогда примем , следовательно, неизвестно значение производной и неизвестно k. При дальнейшем решении используем знак точного равенства, т.е. =.
(а)
(б)
Решим систему уравнений, вычтя из (а) - (б):
=
=
(5.1) 0=.
Последнее слагаемое в формуле (5.1) есть ошибка метода
.
(6.1) .
Формула (6.1) - есть оценка Рунге, где р принимает разные значения. Очень важно подметить, что оценка Рунге не является гарантированной, т.е. модуль истинной погрешности может быть как меньше, так и дольше его, конечно, это весьма нежелательно при значительном превышении, и это необходимо иметь в виду. Подставим формулу (6.1) в формулу (4.1) и получим уточнённое значение производной функции:
(7.1)
Формула (7.1) - это уточнённое значение производной функции с помощью оценки Рунге.
б) Поиск оптимального шага
Поиск оптимального шага, т.е. поиск такого оптимального шага, при котором погрешность наименьшая k* ; ;
+= k* +
Ниже приведена картина, поясняющая поиск оптимального шага:
;
Для нахождения оптимального шага необходимо зафиксировать 5 точек, по которым строится график.
Часть 2
Аппроксимация функции с помощью формулы Тейлора (ряда Тейлора)
Методы аппроксимации функции очень различны. Мы рассмотрим один из них - аппроксимация функции с помощью степенных рядов.
(1) - формула Тейлора, если записать другом виде, уже в математическом:
- ряд Тейлора.
Аппроксимация - это приближённое значение функции.
Если примем функцию за (1), то оценка абсолютной погрешности не превосходит одного отброшенного члена (n+1):
.
Относительная ошибка оценивается, как:
.
Ошибка округления и > с ростом Х; ошибка метода, наоборот, при уменьшении Х, она уменьшается. В результате получается следующая картина:
Конечной задачей является нахождение . Если x>, то не можем аппроксимировать функцию. Это находится при >, где =0.0001+0.0004kV.
Члены ряда вычисляются по рекуррентной формуле вида:
.
Чтобы получить рекуррентную формулу необходимо записать , затем ; - рекуррентная формула, где переходной коэффициент.
В программе рекуррентная формула будет иметь вид: u:= u, и цикл вычислений будет выполняться, пока .
3. Описание переменных
ОбозначениеНазначениеАтрибутыx_e,xd x_r,xeОсновная переменная. Вспомогательная переменная.extendуd realh,h0,h1,h3,h4Шаг для вычисления производной.realD11, D22Производные.real extendedde1,de3Значение производных при h1,h3 соответственноextendedd2eПроизводная с шагом h/2.extendedh_optОптимальный шаг.extendede_okrugОшибка округления.extendede_RungeОценка Рунге или ошибка метода.extendedf_istИстинное значение производной.extendedd_utУточненное значение производной.extendede_sum, e_sum1, e_sum0, e_sum3, e_sum4, e_sum4Суммы ошибок округления и метода.extendedhiЧисло на которое необходимо уменьшить шагreale_sum_oshВременное значение суммарной ошибкиextendedepsОценка допустимой относительной погрешностиextendede_istИстинная ошибкаextendedzПеременная выхода из циклаintegera qПеременные для нахождения h1, h3 Boolean 0..2fe fdЧлены ряда.Extended doublesd seСумма ряда.Double extendede_roundОшибка округления.doublef_istИстинное значение вычисленное через ряд.doublee_metОшибка метода.doublee_sumСуммарная ошибка.doublee_istИстинная ошибка.doublee_otnosОценка относительной ошибки.doubles_absoldoublenПорядковый номер членов рядаintegerf_absolУточненное значениеDoubleFunction f_y(x:extended):extended - функция для ввода функцииxАргумент функцииExtendedfunction DIF_e(x:extended; var:h:real):extended;-функция для приближенного вычисления значения производной по заданной формуле.Входные переменныеxextendedhrealВыходные переменныеDIF_eextendedfunction DIF_r(x:real; h:real):real;-функция для приближенного вычисления значения производной по заданной формуле.Входные переменныеxrealhrealВыходные переменныеDIF_rrealprocedure pr(x_r:real; x_e:extended; var h:real; var e_sum,d_ut,D22,e_runge,e_okrug:extended); - процедура численного вычисления производной.Входные переменныеx_r,hrealx_eextendedВыходные переменныеe_sum,d_ut,D22,e_Runge,e_okrugextendedprocedure h1_h3(xe:extended; xr:real; var h:real; var h1,h3:real; var e_sum1,e_sum3:extended); - для нахождения h1,h3 и соответствующие суммарные ошибкиВходные переменныеxeextendedxr,hrealВыходные переменныеh1,h3reale_sum1,e_sum3extendedprocedure ryad(xe:extended; xd:double; var sd,e_round,e_met,e_sum,e_otnos,f_absol:double; var se,fe:extended);- процедура для вычис