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

 

Министерство образования Российской Федерации

Рязанская государственная радиотехническая академия


Кафедра ВПМ










Пояснительная записка к курсовой работе

по информатике

На тему

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











Рязань 2011 г.

Содержание


  1. Задания на курсовую работу
  2. Введение

Часть 1

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

б). Поиск оптимального шага

Часть 2

Аппроксимация функции с помощью формулы Тейлора (ряда Тейлора)

  1. Описание переменных
  2. Разработка схемы алгоритмов
  3. Разработка программы и её описание
  4. Результаты выполнения программы
  5. Список используемой литературы

1. Задания на курсовую работу


Задание 1


Составить программу и алгоритм для численного дифференцирования с заданной допустимой погрешностью , где, где -номер варианта, - число человек в группе. Вычислить ошибку метода и ошибку округления, чтобы сравнить с точным значение производной. выбрать таким, чтобы значение производной было порядка_1. Найти оптимальное значение шага и соответствующую ему оценку погрешности. . Производную вычислять по формуле:


Задание 2

Записать ряд и вывести рекуррентную формулу. Составить алгоритм и программу аппроксимации функции (без учета ошибки округления). Вывести номер последнего слагаемого, истинную ошибку ; задать относительную погрешность , значение n должно получиться порядка 4-5. провести контрольный расчет на калькуляторе - результаты должны совпасть. Цикл по х организовывать не нужно, х вводить с клавиатуры. Выводить те же самые величины, а также и полную ошибку .


2. Введение


Часто возникает необходимость, как в самой математике, так и её приложениях в разнообразных областях получать решения математических задач в числовой форме. При этом для многих задач известно только о существовании решения, но не существует конечной формулы, представляющей её решение. Даже при наличии такой формулы её использование для получения отдельных значений решения может оказаться неэффективными. Наконец, всегда существует необходимость решать и такие математические задачи, для которых строгие доказательства существования решения на данный момент отсутствуют. Во всех этих случаях используются методы приближённого, в первую очередь численного решения. Как правило, алгоритмы приближённого решения базируются на том, что исходная математическая задача заменяется некоторой более простой или чаще последовательностью более простых задач. Решение этих более простых задач трактуется как приближённое решение задачи исходной. То есть, фактически используется некоторая модель исходной задачи.

Если задана функция y(x), то это означает, что любому допустимому значению х сопоставлено значение у. Но нередко оказывается, что нахождение этого значения очень трудоёмко. Например, у(х) может быть определено как решение сложной задачи, в которой х играет роль параметра. При этом можно вычислить небольшую таблицу значений функции, но прямое нахождение функции при большом числе значений аргумента будет практически невозможно. Функция у(х) может участвовать в каких-либо физико-технических или чисто математических расчётах, где её приходится многократно вычислять. В этом случае выгодно заменить функцию у(х) приближённой формулой, то есть подобрать некоторую функцию ?(х), которая близка в некотором смысле к у(х) и просто вычисляется. Затем при всех значениях аргумента полагают у(х)??(х). Большая часть классического численного анализа основывается на приближении многочленами, так как с ними легко работать.


, < ?< (1)

< ?< (2)

, < ?< (3)


Формулы (1)-(3) называются формулами численного дифференцирования с остаточными членами.

Почти всегда используемые на практике решения математических задач имеют некоторые погрешности. Погрешность решения задачи обуславливается следующими причинами:

1.Математическое описание задачи является не точным, в частности, неточно заданы исходные данные описания.

.Применяемый для решения метод часто не является точным: получение точного решения задачи требует неограниченного или неприемлемо большого числа арифметических операций, и поэтому вместо получения точного решения приходится прибегать к приближённому.

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

Погрешности, соответствующие этим причинам, называются:

а) неустранимая погрешность;

б) погрешность метода;

в) вычислительная погрешность.

Главная задача численных методов - фактическое нахождение решения с требуемой или, по крайней мере, оцениваемой точностью.

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


Часть 1


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


Сразу можно сделать оговорку, что это операция довольно неточная. Рассмотрим простейшую формулу численного дифференцирования:


(1.1) ,


заменим на h


,

при h 0, h>0,


,


где - погрешность


(2.1) ,


последнее слагаемое в формуле (2.1) отбрасывается и является истинной ошибкой метода, в математике это выражение называется остаточным членом. Необходима, конечно, оценка его модуля. Если в основе вычислительного алгоритма лежит приближённый математический метод, то возникает ошибка метода. Очень важно иметь оценки округления и метода.

Ошибка погрешности округления

Оценка погрешности округления производится дублированием расчётов с изменением типа входных данных, её можно произвести достаточно точно, для этого этот способ дублирования: например, дан вещественный тип_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);- процедура для вычисления значения функции через ряд.Входные переменныеxeextendedxddoubleВыходные переменныеsd, e_round, e_met e_sum,e_otnos,f_absoldoublese,feextendedВнутренние переменныеnПорядковый номер членов рядаinteger4.Разработка схемы алгоритма


Функция у=cosx^3/4

Формула для дифференцирования:



при р=4 - для ошибки метода Рунге (для каждой формулы она различна).


В данном задании требуется составить программу для численного дифференцирования функции с заданной допустимой погрешностью, вычислить ошибки, найти оптимальное значение шага и соответствующую ему оценку погрешности. Для вычисления приближённого значения производной по заданной формуле численного вычисления производной и определения оптимального шага будем использовать подпрограммы(процедуры и функции).


Задание 1

В данном задании требуется составить алгоритм и программу для численного дифференцирования функции с заданной допустимой погрешностью , для определения оптимального шага, соответствующую ему оценку погрешности, вычислить ошибки метода и округления. Для вычисления функции в данной точке, численного вычисления, нахождения h1, h2 и соответствующие суммарные ошибки. производной будем использовать подпрограммы(procedure и function).



Задание 2


В данном задании требуется записать в ряд и вывести рекуррентную формулу. Составить алгоритм и программу аппроксимации функции. Вывести - номер последнего слагаемого, истинную ошибку . Задать относительную погрешность , значение n должно получиться порядка 4-5. провести контрольный расчет на калькуляторе - результаты должны совпасть. Цикл по х организовывать не нужно, х вводить с клавиатуры. Выводить те же самые величины, а также и полную ошибку .

Для функции Вариант №24: y(x)= и разложение функции y(x)=в ряд:


.


Для функции разложение в ряд имеет следующий вид:


,


тогда:

Вычисления членов ряда необходимо проводить по рекуррентной формуле. Чтобы получить рекуррентную формулу необходимо записать


, а затем ;

,


тогда - рекуррентная формула. Для вычисления значения функции путем разложения в ряд будем использовать подпрограмму.


5. Описание и текст программы


Программа написана на алгоритмическом языке Turbo Pascal 7.0 и предназначена для решения задач вычислительной математики.



График к заданию №1


График к заданию №2


7. Список используемой литературы

математика программа алгоритм дифференцирование аппроксимация

  1. Вычислительная математика: Методические указания к лабораторным работам 1,2/Рязан. гос. радиотехн. акад.; Сост. В.Д. Корлёв. Рязань, 2008. 8 с.
  2. Приближённые вычисления: Учеб. Пособие /В.Д. Королёв; Рязан. радиотехн. ин - т. Рязань, 2010.
  3. Лекции по курсовой работе.

Министерство образования Российской Федерации Рязанская государственная радиотехническая академия Кафедра ВПМ П

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ