Автор работы: Сергей Лищинский, 01 Июня 2010 в 16:18, курсовая работа
Паскаль − один из наиболее распространенных процедурно-ориентированных языков программирования 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]. Применяя снова метод Ньютона, проведем касательную к кривой в точке 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.
Соответствие между переменными, используемыми в блок-схеме и в программном коде главной программы приведено в Таблице 1.
Соответствие между переменными, используемыми в блок-схеме и в программном коде процедуры Save приведено в Таблице 2.
Таблица 1
Соответствие между переменными, используемыми в блок-схеме и в программном коде главной программы
Обозначения принятые при описании задачи | Обозначения в
программе |
Наименование |
а | а | Левая граница интервала |
b | b | Правая граница интервала |
е | е | Точность |
х | х | Корень |
Key | Key | Содержит символ нажатой клавиши |
Таблица 2
Соответствие между переменными, принятыми при описании задачи и в процедуре Save
Обозначения принятые при описании задачи | Обозначения в
программе |
Наименование |
f | f | Файловая переменная |
S | S | Название файла |
Структурная
схема главной программы
Структурная схема подпрограммы функции f изображена на Рис. 4.2.
Структурная схема подпрограммы процедуры PolDel изображена на Рис. 4.3.
Структурная схема подпрограммы процедуры Vvod изображена на Рис. 4.4.
Структурная схема подпрограммы процедуры Vivrez изображена на Рис. 4.5.
Структурная схема подпрограммы процедуры Save изображена на Рис. 4.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.
Для работы с программой нужно запустить программу POLDEL.EXE, находящийся на дискете в приложении D, занимающий 20 кБ.
После запуска программы на экране появляется меню программы в котором содержатся следующие пункты (см. Прил. Б).
Для ввода исходных данных необходимо в меню нажать 1 ввести по очереди значение левой границы интервала, затем правой, затем точности вычисления.
Для просмотра результата вычисления необходимо в меню нажать 2. По окончанию просмотра нажмите любую клавишу.
Для сохранения результата необходимо нажать в главном меню 3 и после появления запроса ввести имя файла, в который следует записать результат.
Для выхода из программы необходимо в меню нажать 0.
В данной курсовой работе была разработана программа, решающая нелинейное уравнение. Для его решения был выбран метод половинного деления.
ЛИСТИНГ
ПРОГРАМЫ
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;