- •6 Вспомогательные материалы для выполнения лабораторных работ 102
- •3Введение
- •4Рекомендации по выполнению практической части лабораторных работ
- •5Методы процедурного программирования
- •6Модульное проектирование
- •7Структурное программирование
- •7.1Проектирование сверху вниз
- •7.2Модульное программирование
- •7.3Структурное кодирование
- •9Цель работы
- •10Порядок выполнения работы
- •11.1Запуск ide. Типы приложений
- •11.2Создание нового проекта
- •11.3Добавление к проекту файлов с исходным кодом
- •3.3.1 Добавление нового файла
- •3.3.2 Добавление существующего файла
- •11.4Многофайловые проекты
- •11.5Компиляция, компоновка и выполнение проекта
- •3.5.1 Конфигурация проекта
- •3.5.2 Как открыть проект, над которым вы работали ранее
- •12Встроенная справочная система
- •13Проблемы с вводом-выводом кириллицы
- •5.1. Замечания по потоковому вводу-выводу
- •6. Работа с отладчиком
- •6.1. Установка точки прерывания
- •6.2. Выполнение программы до точки прерывания
- •6.3. Пошаговое выполнение программы
- •6.3.1 Проверка значений переменных во время выполнения программы
- •6.3.2 Окна Auto, Local и Watch
- •7 Содержание отчета по лабораторной работе
- •14Контрольные вопросы
- •Как открыть проект, над которым вы работали ранее?
- •14.1Рекомендуемые источники информации
- •15Лабораторная работа 2. Программирование разветвляющихся алгоритмов
- •16Цель работы
- •17Задание
- •18Рекомендации по разработке программы
- •19Требования к отчету
- •20Контрольные вопросы
- •21Рекомендуемые источники информации
- •Московский государственный технический университет им. Н.Э. Баумана.
- •22Лабораторная работа 3. Табулирование функций с использованием рядов Тейлора
- •23Цель работы
- •24Задание
- •25Рекомендации по выполнению работы
- •25.1Указание к задаче 1 задания
- •25.2Указание к задаче 2 задания
- •25.3Указание к задаче 3 задания
- •25.4Указание к задаче 4 задания
- •26Содержание отчета.
- •27Контрольные вопросы
- •28Рекомендуемые источники информации
- •29 Варианты задания
- •29.1.1.1Вариант 1
- •29.1.1.2Вариант 2
- •29.1.1.3Вариант 3
- •29.1.1.4Вариант 4
- •29.1.1.5Вариант 5
- •29.1.1.6Вариант 6
- •29.1.1.7Вариант 7
- •29.1.1.8Вариант 8
- •29.1.1.9Вариант 9
- •29.1.1.10Вариант 10
- •29.1.1.11Вариант 11
- •29.1.1.12Вариант 12
- •29.1.1.13Вариант 13
- •30Лабораторная работа 4 Численные методы решения нелинейных уравнений
- •31Цель работы.
- •32Задание.
- •33Рекомендации по выполнению работы
- •34Содержание отчета
- •40Примеры работы с массивами
- •40.1Количество элементов между минимальным и максимальным
- •40.2Динамические массивы
- •40.3Использование датчика случайных чисел.
- •41Содержание отчета
- •42Контрольные вопросы
- •43Рекомендуемые источники информации
- •44Лабораторная работа 6. Численное интегрирование функций
- •45Цель работы.
- •46Задание.
- •47Рекомендации по выполнению работы.
- •47.1Метод прямоугольников.
- •47.2Метод трапеций.
- •47.3Формулы для вычисления точных значений интеграла:
- •47.4Примеры передачи в функцию в качестве параметров одномерных массивов и имен функций.
- •3.5. Пример вывода таблицы результатов
- •47.5Функция для печати таблицы результатов
- •48Содержание отчета
- •49Контрольные вопросы
- •50Рекомендуемые источники информации
- •51Лабораторная работа 7 Обработка и печать числовой матрицы
- •52Цель работы
- •53Задание
- •Рекомендации по выполнению работы
- •53.1Создание двухмерных динамических массивов
- •53.2Передача многомерного массива в функцию с помощью параметров.
- •53.3Пример разработки программы сортировки строк матрицы
- •53.4Основные правила работы с двухмерными массивами
- •53.5Рекомендации по созданию программы
- •54Содержание отчета
- •55Контрольные вопросы
- •57.3Рекомендации по выполнению работы
- •57.4Ввод-вывод строк
- •57.5Пример программы работы с символьными строками.
- •I. Исходные данные и результаты
- •II. Алгоритм решения задачи
- •57.6Работа с файлами
- •Void open (char*FileName, int режим, int защита);
- •57.7Потоки ввода-вывода.
- •57.7.1.1Функции для обмена с потоками
- •57.7.1.2Функции чтения
- •57.8Использование аргументов командной строки
- •Часть 1.
- •Часть 2.
- •63.33. Рекомендации по выполнению работы
- •63.4Алгоритм вычисления обратной матрицы
- •63.4.1.1Шаг 1. Прямой ход
- •63.4.1.2Шаг 2. Обратный ход
- •63.4.23.2. Точность вычисления обратной матрицы.
- •69Задание и требования к результатам работы
- •70Рекомендации по выполнению работы
- •70.1Шаги разработки программы
- •70.2Работа со структурами
- •70.3Дополнительные требования для «сильных» студентов:
- •71Содержание отчета
- •72Контрольные вопросы
- •73Рекомендуемые источники информации
- •74Домашнее задание. Методические указания к домашнему заданию по курсу «Основы программирования»
- •76Цели домашнего задания
- •2. Требования к выполнению задания
- •76.1Групповая разработка проектов
- •76.2Шаги выполнения задания
- •77Требования к отчету
- •78Оценка выполнения задания
46Задание.
1. Численное интегрирование функции с заданной точностью методом прямоугольников.
Вычислить
определённый интеграл
в
пределах от a до
b для четырех
функций f1 = x,
f2 = sin( 22 * x
), f3 = x4
и f4 = arctg(x).
Вычисление интеграла оформить в виде функции IntRect.
Вычисления выполнить для пяти значений точности: 0.01, 0.001, 0.0001, 0.00001 и 0.000001.
Исследовать быстродействие алгоритма в зависимости от подынтегральной функции и требуемой точности (быстродействие алгоритма можно оценить числом элементарных прямоугольников n).
Результаты представить в виде 5 таблиц, по одной таблице для каждого значения точности. В каждой таблице выводить данные для всех четырех функций.
Для печати таблицы результатов использовать функцию
void PrintTabl(I_print i_prn[],int k), приведенную в приложении 2.
Здесь i_prn[] – массив структур типа I_print размерностью k.
Вид таблицы приведен в Приложении 1.
2. Выполнить п.1, используя для интегрирования метод трапеций. Вычисление интеграла оформить в виде функции IntTrap.
Для печати таблиц результатов использовать ту же функцию, что и в методе прямоугольников.
47Рекомендации по выполнению работы.
Задача вычисления определенного интеграла формулируется следующим образом: вычислить для подынтегральной функции f(x) при заданных значениях пределов интегрирования a, b и требуемой точности eps.
Так как в лабораторной работе требуется выполнять вычисление интеграла для четырех функций, для пяти значений точности для каждой функции и двумя методами, то для сокращения объема программы следует использовать циклы, а для обеспечения возможности реализации циклов обрабатываемые данные нужно хранить в массивах (массив указателей на функции, массив значений точности, массив структур для хранения и печати результатов вычислений).
Разработка алгоритма и отладка такой программы существенно упрощается, если ее выполнять по шагам, начиная с укрупненной схемы, которая отражает общую структуру программы и включает определение типов переменных, функций, массивов и циклы с их использованием. Эта программа будет уточняться в процессе разработки программы для выполнения лабораторной работы. Вместо функций интегрирования на первом шаге следует использовать “заглушки”, то есть функции, имеющие такой же прототип, что и функции интегрирования, но которые при вызове вместо реализации метода возвращают постоянные тестовые значения.
Кодирование и отладку функций численного интегрирования следует выполнять после того, как будет разработана и отлажена “тестовая” программа.
47.1Метод прямоугольников.
При численном интегрировании площадь под кривой заменяется суммой площадей «элементарных» прямоугольников с основанием ∆x и высотой, проведенной из середины основания.
Формула приближенного значения определенного интеграла представляется в виде
,
где: xi = a + x/2 + (i-1)*x; N - число элементарных прямоугольников.
Для уменьшения объема вычислений множитель x следует вынести за знак суммы. Тогда в цикле нужно выполнять только суммирование, а затем полученную сумму один раз умножить на x.
Для оценки погрешности вычисления интеграла на практике используют правило Рунге. Суть правила состоит в том, что выполняют вычисление интеграла с двумя разными шагами изменения переменной х, а затем сравнивают результаты и получают оценку точности. Наиболее часто используемое правило связано с уменьшением x в два раза на каждом шаге вычисления интегральной суммы.
Для методов прямоугольников и трапеций погрешность Rx/2 вычисления интеграла с шагом x/2 оценивается следующей формулой:
|Rx/2|
=
,
(1)
где Ix/2 – значение интеграла, вычисленное с шагом x/2; Ix – значение интеграла, вычисленное с шагом x.
В программе вычисления интеграла с точностью eps во внутреннем цикле находят значение определенного интеграла с шагом x/2.
Во внешнем цикле производится сравнение значений интегральных сумм, вычисленных с шагами x (вычислена на предыдущем шаге) и x/2 соответственно. Если требуемая точность не достигнута, то число разбиений удваивается, а в качестве предыдущего значения интеграла берут текущее и вычисление интеграла выполняется при новом числе разбиений.
Для организации итерационного цикла перед входом в цикл нужно определить начальные значения x и Ix.
Вычисление интеграла оформить в виде функции IntRect, формальными параметрами которой являются:
f - имя интегрируемой функции,
a, b – границы интервала интегрирования,
eps – требуемая точность,
n – число прямоугольников, при котором достигнута требуемая точность (выходной).
Функция возвращает значение интеграла.
Прототип функции:
double IntRect(TPF f,double a,double b,double eps,int& n);
Здесь:
TPF – тип указателя на подынтегральную функцию, определяемый пользователем:
typedef double (*TPF)(double);
Для хранения и печати результатов вычислений используйте структуру, элементами которой являются наименование функции, значения интеграла (точное и вычисленное в виде суммы) и число «элементарных» прямоугольников n, при котором достигнута требуемая точность. Точные значения, полученные аналитически, нужны для оценки правильности результатов численного интегрирования.
