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

Оценка погрешности и точности в математике. Составление программы и алгоритма для численного дифференцирования с заданной допустимой погрешностью на алгоритмическом языке Turbo Pascal 7.0. Составление алгоритма и программы аппроксимации функции.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 24.03.2012
Размер файла 810,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

26

Размещено на http://www.allbest.ru/

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

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

Кафедра ВПМ

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

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

На тему

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

Рязань 2011 г.

Содержание

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

Введение

Часть 1

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

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

Часть 2

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

Описание переменных

Разработка схемы алгоритмов

Разработка программы и её описание

Результаты выполнения программы

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

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

Задание 1

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

Задание 2

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

2. Введение

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

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

, < о< (1)

< о< (2)

, < о< (3)

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

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

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

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

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

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

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

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

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

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

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

Часть 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. При дальнейшем решении используем знак точного равенства, т.е. «=».

(а)

(б)

Решим систему уравнений, вычтя из (а) - (б):

0=

0=

(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

real

h,h0,h1,h3,h4

Шаг для вычисления производной.

real

D11,

D22

Производные.

real

extended

de1,de3

Значение производных при h1,h3 соответственно

extended

d2e

Производная с шагом h/2.

extended

h_opt

Оптимальный шаг.

extended

e_okrug

Ошибка округления.

extended

e_Runge

Оценка Рунге или ошибка метода.

extended

f_ist

Истинное значение производной.

extended

d_ut

Уточненное значение производной.

extended

e_sum, e_sum1, e_sum0, e_sum3, e_sum4, e_sum4

Суммы ошибок округления и метода.

extended

hi

Число на которое необходимо уменьшить шаг

real

e_sum_osh

Временное значение суммарной ошибки

extended

eps

Оценка допустимой относительной погрешности

extended

e_ist

Истинная ошибка

extended

z

Переменная выхода из цикла

integer

a

q

Переменные для нахождения h1, h3

Boolean 0..2

fe

fd

Члены ряда.

Extended double

sd

se

Сумма ряда.

Double extended

e_round

Ошибка округления.

double

f_ist

Истинное значение вычисленное через ряд.

double

e_met

Ошибка метода.

double

e_sum

Суммарная ошибка.

double

e_ist

Истинная ошибка.

double

e_otnos

Оценка относительной ошибки.

double

s_absol

double

n

Порядковый номер членов ряда

integer

f_absol

Уточненное значение

Double

Function f_y(x:extended):extended -- функция для ввода функции

x

Аргумент функции

Extended

function DIF_e(x:extended; var:h:real):extended;-функция для приближенного вычисления значения производной по заданной формуле.

Входные переменные

x

extended

h

real

Выходные переменные

DIF_e

extended

function DIF_r(x:real; h:real):real;-функция для приближенного вычисления значения производной по заданной формуле.

Входные переменные

x

real

h

real

Выходные переменные

DIF_r

real

procedure pr(x_r:real; x_e:extended; var h:real; var e_sum,d_ut,D22,e_runge,e_okrug:extended); - процедура численного вычисления производной.

Входные переменные

x_r,h

real

x_e

extended

Выходные переменные

e_sum,d_ut,D22,e_Runge,e_okrug

extended

procedure h1_h3(xe:extended; xr:real; var h:real; var h1,h3:real; var e_sum1,e_sum3:extended); - для нахождения h1,h3 и соответствующие суммарные ошибки

Входные переменные

xe

extended

xr,h

real

Выходные переменные

h1,h3

real

e_sum1,e_sum3

extended

procedure ryad(xe:extended; xd:double; var sd,e_round,e_met,e_sum,e_otnos,f_absol:double; var se,fe:extended);- процедура для вычисления значения функции через ряд.

Входные переменные

xe

extended

xd

double

Выходные переменные

sd, e_round, e_met

e_sum,e_otnos,f_absol

double

se,fe

extended

Внутренние переменные

n

Порядковый номер членов ряда

integer

4. Разработка схемы алгоритма

Функция у=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,2/Рязан. гос. радиотехн. акад.; Сост. В.Д. Корлёв. Рязань, 2008. 8 с.

Приближённые вычисления: Учеб. Пособие /В.Д. Королёв; Рязан. радиотехн. ин - т. Рязань, 2010.

Лекции по курсовой работе.

Размещено на Allbest


Подобные документы

  • Составление программы на алгоритмическом языке Turbo Pascal. Разработка блок-схемы алгоритма её решения. Составление исходной Pascal-программы и реализация вычислений по составленной программе. Применение методов Рунге-Кутта и Рунге-Кутта-Мерсона.

    курсовая работа [385,0 K], добавлен 17.09.2009

  • Программирование на алгоритмическом языке Turbo Pascal на примере разработки алгоритма и программы расчета временной функции. Выбор, обоснование методов решения. Схемы алгоритмов основной программы и подпрограмм. Распечатка исходных и вычисленных величин.

    реферат [154,8 K], добавлен 15.03.2012

  • Составление программы вычисления матрицы и программы вычисления интеграла с погрешностью, не превышающей заданную величину. Схема алгоритма и её описание. Инструкция по использованию разработанной программы и проверка правильности е функционирования.

    курсовая работа [54,8 K], добавлен 27.10.2010

  • Разработка линейной программы на языке С++. Разработка программ с разветвленной структурой. Составление по заданному варианту схемы алгоритма и программы вычисления тригонометрической функции с абсолютной погрешностью с использованием разложения в ряд.

    лабораторная работа [1,2 M], добавлен 12.01.2011

  • Построение интерполяционного полинома Ньютона по значениям функции в узлах согласно методу Лагранжа. Составление алгоритмов решения задачи, их реализация на программном уровне на языке Turbo Pascal. Представление результатов работы программы Polinom.

    курсовая работа [667,9 K], добавлен 01.10.2010

  • Решения задачи графическим и программным способами. Описание алгоритма решения графическим способом, укрупненная схема алгоритма. Ввод элементов двумерного массива, вывод преобразованного массива, разработка программы на языке pascal, листинг программы.

    курсовая работа [115,5 K], добавлен 22.05.2010

  • Элементы и переменные, используемые для составления записи в Паскале. Основные числовые типы языка Turbo Pascal. Составление блок-схемы приложения, программирование по ней программы для вычисления функции. Последовательность выполнения алгоритма.

    лабораторная работа [256,9 K], добавлен 10.11.2015

  • Программирование и структура программы на языке Turbo Pascal и MS Visual C++6.0. Вычисление площади круга. Реализация программы в системе Turbo Pascal и MS VISUAL C++6.0 для Windows. Структура окна ТРW. Сохранение текста программы в файле на диске.

    лабораторная работа [3,7 M], добавлен 22.03.2012

  • Исследование двух методов численного дифференцирования. Определение относительно максимального значения функции на интервале, абсолютной погрешности относительно значений аналитически вычисленной производной. Структура и этапы вычислительной программы.

    курсовая работа [1,8 M], добавлен 14.04.2011

  • Общие сведения об алгоритмическом языке PASCAL. Схема алгоритма и программы для построения графика временной функции, работающей как в машинном, так и в реальном времени. Применение метода простой итерации, метода решения полинома на языке PASCAL.

    курсовая работа [41,5 K], добавлен 15.03.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.