geum.ru - только лучшие рефераты!

Программная реализация вычислительных алгоритмов

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



емое в формуле (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);- процедура для вычис