Метод половинного деления
Курсовая работа, 01 Июня 2010, автор: Сергей Лищинский
Краткое описание
Паскаль − один из наиболее распространенных процедурно-ориентированных языков программирования 80 - 90-х годов, имеет свою достаточно интересную историю, начало которой положило объявление в 1965 г. конкурса по созданию нового языка программирования - преемника Алгола - 60. Участие в конкурсе принял швейцарский ученый Николаус Вирт, который работал на факультете информатики Стэндфордского университета. Проект, предложенный им, был отвергнут комиссией в 1967 г. Но Вирт не прекратил работу. Вернувшись в Швейцарию, совместно с сотрудниками Швейцарского федерального института технологии в Цюрихе, он уже в 1968 г. разработал новую версию языка Паскаль, названного так в честь великого французского математика и механика Блеза Паскаля, создавшего в 1642 г. первую счетную машину. В 1971 г. Н. Вирт выпустил описание своего языка, а в 1975 г. было разработано руководство для пользователей версии Паскаля, которая практически легла в основу стандарта языка. Но стандарт языка появился только в 1982 г.
Содержание работы
введение 4
1. постановка задачи 5
2. метод половинного деления 6
3 .соответствие между переменными, принятыми при описании задачи и в програме 9
4. структурная схема программ и ее описание 12
5. листинг програмы 20
6. контрольный пример и анализ результата 21
7. инструкция пользователя 26
заключение 27
список литературы 28
приложения 29
приложение а 30
приложение б. 32
приложение д. 33
Содержимое работы - 1 файл
Курсовой метод половинного деления.doc
— 1.02 Мб (Скачать файл)Теперь корень уравнения находится на отрезке [а, х1]. Применяя снова метод Ньютона, проведем касательную к кривой в точке B1 (x1; f(x1)) и полечим
и вообще
(2)
Получаем последовательность приближенных значений x1, х2, …, xn, …, каждый последующий член которой ближе к корню ξ, чем предыдущий. Однако все хn, остаются больше истинного корня ξ, т.е. хn – приближенное значение корня ξ с избытком.
Второй случай. Пусть f(а) < 0, f (b) > 0, f '(х) > 0, f ''(х) < 0 (рис. 2, а) или f(а)> 0, f(b) < 0, f '(х) < 0, f ''(x) > 0 (рис. 2, б). Если снова провести касательную к кривой у= f (x) в точке В, то она пересечет ось абсцисс в точке, не принадлежащей отрезку [a, b]. Поэтому проведем касательную в точке A0(a; f(а)) и запишем ее уравнение для данного случая:
Полагая у = 0, x = x1 находим
(3)
Корень ξ находится теперь на отрезке [х1, b]. Применяя снова метод Ньютона, проведем касательную в точке A1 (x1; f(x1)) и получим
и вообще
(4)
Получаем последовательность приближенных значений х1, х2, … ,хn,…, каждый последующий член которой ближе к истинному корню ξ, чем предыдущий, т.е. хn – приближенное значение корня ξ с недостатком.
Сравнивая
эти формулы с ранее
При
выборе начального приближения корня
необходимо руководствоваться следующим
правилом: за исходную точку следует выбирать
тот конец отрезка [а, b], в котором
знак функции совпадает со знаком второй
производной. В первом случае f(b)
∙ f ''(х) > 0 и начальная точка
b = x0, во втором f(a) ∙ f
"(x) > 0 и в качестве начального
приближения берем а = х0.
3 .СООТВЕТСТВИЕ МЕЖДУ ПЕРЕМЕННЫМИ, ПРИНЯТЫМИ ПРИ ОПИСАНИИ ЗАДАЧИ И В ПРОГРАМЕ
Соответствие между переменными, используемыми в блок-схеме и в программном коде главной программы приведено в Таблице 1.
Соответствие между переменными, используемыми в блок-схеме и в программном коде процедуры Save приведено в Таблице 2.
Таблица 1
Соответствие между переменными, используемыми в блок-схеме и в программном коде главной программы
| Обозначения принятые при описании задачи | Обозначения в
программе |
Наименование |
| а | а | Левая граница интервала |
| b | b | Правая граница интервала |
| е | е | Точность |
| х | х | Корень |
| Key | Key | Содержит символ нажатой клавиши |
Таблица 2
Соответствие между переменными, принятыми при описании задачи и в процедуре Save
| Обозначения принятые при описании задачи | Обозначения в
программе |
Наименование |
| f | f | Файловая переменная |
| S | S | Название файла |
4. СТРУКТУРНАЯ СХЕМА ПРОГРАММ И ЕЕ ОПИСАНИЕ
Структурная
схема главной программы
- ввод клавиши выбора пункта меню;
- если выполняется условие Key=’1’ то выполнить блок, 3 иначе выполнить блок 4;
- обращение к процедуре ввода исходных данных Vvod;
- если выполняется условие Key=’2’ то выполнить блок 5, иначе выполнить блок 6;
- обращение к процедуре поиска корня и вывода его на экран VivRez;
- если выполняется условие Key=’3’ то выполнить блок 7, иначе выполнить блок 8;
- обращение к процедуре поиска корня и сохранения его в файл;
- если выполняется условие Key=’0’ то выйти из программы, иначе вернуться к блоку 1.
Структурная схема подпрограммы функции f изображена на Рис. 4.2.
- присваивание заголовку функции заданного варианта.
Структурная схема подпрограммы процедуры PolDel изображена на Рис. 4.3.
- вычисление начального значения х;
- если значение функции в точке х отстоит от 0 на величину превышающую заданную точность е то выполнить цикл уточнения – перейти к блоку 3, иначе выйти из подпрограммы;
- если функция в точке а и в точке х имеет одинаковый знак то выполнить блок 4, иначе выполнить блок 5;
- левая граница перемещается в точку х;
- правая граница перемещается в точку х;
- вычисление нового значения х.
Структурная схема подпрограммы процедуры Vvod изображена на Рис. 4.4.
- вывод запроса на ввод левой границы интервала;
- ввод а – левой границы интервала;
- вывод запроса на ввод правой границы интервала;
- ввод b – правой границы интервала;
- вывод запроса на ввод точности вычисления корня уравнения;
- ввод е – точности вычисления корня уравнения.
Структурная схема подпрограммы процедуры Vivrez изображена на Рис. 4.5.
- обращение к процедуре вычисления корня уравнения PolDel;
- вывод найденного корня.
Структурная схема подпрограммы процедуры Save изображена на Рис. 4.6.
- вывод запроса названия файла;
- ввод названия файла;
- обращение к процедуре подключения файла с введённым именем;
- обращение к процедуре открытия файла для записи;
- обращение к процедуре вычисления корня уравнения PolDel;
- вывод в файл полученного значения корня;
- обращение к процедуре закрытия файла.
5. ЛИСТИНГ ПРОГРАМЫ
Листинг программы находится в приложении А.
6. КОНТРОЛЬНЫЙ ПРИМЕР И АНАЛИЗ РЕЗУЛЬТАТА
Для контрольного примера найдём значение корня на интервале от 0 до 5. Найдём этот корень графически с использованием программы Microsoft Excel (см. табл 6.1., рис. 6.1).
Найдём
этот корень при помощи программы (см.
рис 6.2.-6.3). Полученное при помощи программы
значение корня соответствует расчётному.
Таблица. 6.1
Расчетные точки графика функции f(x)=x2-x-6, полученные при помощи программы Microsoft Excel
| x | y |
| 0 | -6 |
| 1 | -6 |
| 2 | -4 |
| 3 | 0 |
| 4 | 6 |
| 5 | 14 |
Рис. 6.1.
Рис. 6.1.
Рис. 6.2.
7. ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЯ
Для работы с программой нужно запустить программу POLDEL.EXE, находящийся на дискете в приложении D, занимающий 20 кБ.
После запуска программы на экране появляется меню программы в котором содержатся следующие пункты (см. Прил. Б).
- 1-Ввести данные
- 2-Отобразить результат
- 3-Сохранить результат в файл
- 0-Выход
Для ввода исходных данных необходимо в меню нажать 1 ввести по очереди значение левой границы интервала, затем правой, затем точности вычисления.
Для просмотра результата вычисления необходимо в меню нажать 2. По окончанию просмотра нажмите любую клавишу.
Для сохранения результата необходимо нажать в главном меню 3 и после появления запроса ввести имя файла, в который следует записать результат.
Для выхода из программы необходимо в меню нажать 0.
ЗАКЛЮЧЕНИЕ
В данной курсовой работе была разработана программа, решающая нелинейное уравнение. Для его решения был выбран метод половинного деления.
СПИСОК ЛИТЕРАТУРЫ
- Кетков Ю.Л., Кетков А.Ю. Практика программирования: Бейсик, Си, Паскаль. Самоучитель. – СПб.: БХВ-Петербург, 2001. 408 с.: ил.
- Любиев О.Н., Филиппенко Л.Н., Филиппенко Г.Г. Методические указания к выполнению курсовой работы по дисциплинам «Программирование на ЯВУ, Информатика», Новочеркасск, ЮРГТУ, 2003г. – 256 с.
- Фаронов В.В. «Турбо Паскаль 7.0» Начальный курс. Учебное пособие. Издание 7-е, переработанное. – М.: «Нлидж», издатель Молчалева С.В., 2001.-576 с. с ил.
- Абрамов В.Г., Трифонов Н.П. Введение в язык Паскаль. – М. :Наука, 1988.-320 с.
ПРИЛОЖЕНИЯ
ПРИЛОЖЕНИЕ А
ЛИСТИНГ
ПРОГРАМЫ
Program PolD;
Uses
CRT;
Var
a,b,e,x:real;
Function F(var x:real):real;
begin
f:=sqr(x)-x-6;
end;
{=============================
Procedure PolDel(a,b,e:real; var x:real);
begin
x:=(a+b)/2;
while abs(F(x))>e do
begin
if F(a)*F(x)>0 then a:=x
else b:=x;
x:=(a+b)/2;
end;