- •Программирование на языке Паскаль
- •Содержание
- •Оформление лабораторных работ
- •Текст программы
- •Экранные меню и циклы Постановка задачи
- •Математическая модель
- •Описание алгоритма
- •Текст программы
- •Процедуры и функции Постановка задачи
- •Математическая модель
- •Описание алгоритма
- •Текст программы
- •Работа с файлами и алгоритмы сортировки Постановка задачи
- •Математическая модель
- •Описание алгоритма
- •Текст программы
- •Inc(Cmp); {Подсчет количества сравнений}
- •Inc(Cmp); {Подсчет количества сравнений}
- •Визуальное программирование Постановка задачи
- •Математическая модель
- •Основная форма программы
- •Основные свойства формы
- •Элементы формы
- •Текст программы
- •Библиографический список
-
Процедуры и функции Постановка задачи
Основная задача.
Написать программу для численного
интегрирования функций
и
на любом отрезке с заданной точностью.
Отладить программу при помощи
интегрирования функций, для которых
известны аналитические выражения
первообразных (т.е. можно рассчитать
точные значения интегралов и сравнить
их с полученными приближенными). При
расчете и выводе приближенных значений
на экран ограничиться шестью десятичными
знаками, для точных выводить 12 знаков.
Дополнительные задачи.
1. Организовать меню из четырех пунктов
(интегрирование функций
,
,
,
).
Написать процедуру PrintIntegr,
в которую будут передаваться две функции:
интегрируемая функция и ее первообразная.
Процедура должна выдавать на экран
приближенное и точное значения интеграла.
При выборе последних двух функций, для
которых первообразная неизвестна,
передавать в процедуру вместо первообразной
значение NIL. Процедура
должна корректно обрабатывать этот
случай и не выдавать в этом случае
точного значения интеграла.
2. Добавить в меню пункт «Выход» и организовать в основной программе внешний цикл WHILE, как в третьей лабораторной работе. Организовать в процедуре PrintIntegr цикл REPEAT, который будет выполняться, пока на запрос «Продолжить вычисление (Y/N) ?» не будет введено «N».
Математическая модель
Интеграл приближенно заменяем суммой:
,
что эквивалентно замене площади под кривой набором отдельных прямоугольников, как показано на следующем рисунке.

Для тестирования программы будем применять две функции с известными первообразными:
,
,
,
.
Точное значение интеграла будем
рассчитывать по формуле Ньютона-Лейбница:
.
Описание алгоритма
Алгоритм
Sum. Вход: функция
f, отрезок [a,b],
количество разбиений n.
Выход: приближенное значение интеграла,
замененное интегральной суммой
.
А. Начать исполнение.
1. Рассчитать
.
2. Записать в результат значение 0.
3. Для значений i от 0 до n-1 повторять:
А. Увеличить результат на
.
4. Конец цикла.
Б. Закончить исполнение.
Алгоритм
Integr. Вход: функция
f, отрезок [a,b],
точность результата δ.
Выход: значение интеграла
с точностью.
А. Начать исполнение.
1. Присвоить n значение 8.
2. Записать в результат (переменную Result) приближенное значение интеграла функции f на отрезке [a,b] с разбиением на n частей.
3. Повторять:
А. Записать результат в переменную P.
Б. Удвоить n.
В. Записать в результат приближенное значение интеграла функции f на отрезке [a,b] с разбиением на n частей (подпрограмма Sum).
4. Конец цикла при условии |Result-P|<δ (т.е. результат по сравнению с предыдущим изменился менее чем на заданную точность).
Б. Закончить исполнение.
Алгоритм PrintIntegr. Вход: функция для интегрирования f и (необязательно) ее первообразная G.
А. Начать исполнение.
1. Повторять:
А. Вывести сообщение "Введите отрезок интегрирования [a,b]".
Б. Ввести a,b.
В. Вывести "Приближенное значение интеграла равно", Integr(f,a,b,10-6), "0.000001".
Г. Если известна первообразная, то вывести "Точное значение интеграла равно", G(b)-G(a).
Д. Вывести сообщение "Продолжить вычисление (Y/N) ?".
Е. Ввести символ ot.
2. Конец цикла при условии ot='N'.
Б. Закончить исполнение.
Алгоритм Lab4.
А. Начать исполнение.
1. Присвоить переменной Loop значение "истина".
2. Пока Loop имеет значение "истина", повторять:
А. Вывести на экран меню: "1 –
Интегрирование функции
2
– Интегрирование функции
3
– Интегрирование функции
4
– Интегрирование функции
5
– Выход".
Б. Вывести сообщение "Выберите пункт меню".
В. Ввести n.
Г. Исследовать n:
1. Если n=1, то вызвать подпрограмму PrintIntegr для функции f1 с первообразной G1.
2. Если n=2, то вызвать подпрограмму PrintIntegr для функции f2 с первообразной G2.
3. Если n=3, то вызвать подпрограмму PrintIntegr для функции f3 без первообразной.
4. Если n=4, то вызвать подпрограмму PrintIntegr для функции f4 без первообразной.
5. Если n=5, то присвоить переменной Loop значение "ложь".
3. Конец цикла.
Б. Закончить исполнение.
