Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
laby.doc
Скачиваний:
162
Добавлен:
22.02.2015
Размер:
565.25 Кб
Скачать
    1. Процедуры и функции Постановка задачи

Основная задача.

Написать программу для численного интегрирования функций ина любом отрезке с заданной точностью. Отладить программу при помощи интегрирования функций, для которых известны аналитические выражения первообразных (т.е. можно рассчитать точные значения интегралов и сравнить их с полученными приближенными). При расчете и выводе приближенных значений на экран ограничиться шестью десятичными знаками, для точных выводить 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. Конец цикла.

Б. Закончить исполнение.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]