Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические материалы к ДЗ.doc
Скачиваний:
6
Добавлен:
09.02.2015
Размер:
472.06 Кб
Скачать

Методические указания по выполнению домашних заданий для студентов 1 курса специальности иу-10.

Оглавление.

Методические указания по выполнению домашних заданий для студентов 1 курса специальности ИУ-10. 1

Введение. 1

Домашнее задание 1. 2

Практикум 6. Приближенные вычисления. 2

Задача 6.1. 3

Задания. 5

Задача 6.2. 8

Задания. 10

Практикум 7. Процедурные типы. 11

Задача 7.1. 13

Задания. 16

Задача 7.2. 17

Задания. 20

Домашнее задание 2. 21

Практикум 13. Типизированные файлы. 21

Задача 13.1. 21

Задания. 30

Домашнее задание 3. 35

Практикум 18. Использование объектной технологии для построения движущихся фигур. 35

Введение.

Поскольку домашние задания являются составной частью курса, то в настоящем пособии сохранена нумерация разделов, соответствующих темам домашнего задания из «Практикума по программированию», издание которого готовится в настоящее время на кафедре ИУ-10.

Домашнее задание 1. Практикум 6. Приближенные вычисления.

Все приближенные вычисления выполняются над данными действительного типа, обычно real или double. Для приближенных методов вычисления, как правило, строится итерационный цикл по точности. Итерацией будем называть однократное выполнение этого цикла. Из трех конструкций цикла чаще всего используются циклы

repeat <операторы> until<условие окончания>;

while<условие продолжения> do <оператор>;

Цикл for...todoиспользуется крайне редко, поскольку заранее никогда не известно на какой итерации будет достигнута заданная точность. Понятие точности решения мы будем использовать самое очевидное, не вдаваясь в математические тонкости, что, впрочем, не означает их отрицание. Наконец, кроме точности будем использовать дополнительно ограничение числа итераций.

Решение нелинейных алгебраических уравнений.

В дальнейшем будем считать, что на интервале x [a, b] существует корень уравнения f(x)=0 и этот корень единственный (рис.6.1). Сущность всех методов численного решения нелинейных алгебраических уравнений заключается в поиске такой точки c внутри интервала [a, b] (т.е. с [a, b]), чтобы эта точка делила [a, b] на две части [a, с] и [с, b].

Не имеет принципиального значения способ определения точки c. Если координаты точки определяются как среднее арифметическое [a, b], то этот метод называется методом половинного деления. Если эта точка является точкой пересечения оси абсцисс и хорды AB, то это метод хорд.

Корень уравнения x0 находится теперь на одном из двух интервалов – либо на [a, с], либо на [с, b]. Если корень на [a, с], то полагается b, в противном случае для интервала [с, b] полагается a. Далее вычисления повторяются, пока не будет достигнута заданная точность.

Признаком того, что корень находится на [a, с] является выполнение неравенства f(a)*f(с)<0 , в противном случае корень будет находится на втором интервале.

Рис.6.1. Методы определения приближенного положения корня.

Задача 6.1.

Найти все корни нелинейного уравнения x2-sin(x)=0 методом половинного деления с точностью 0.0001.

Этап 1. В этой и подобных задачах полезно вначале построить график функции вида y(x)=x2-sin(x), чтобы приближенно локализовать положение корней на оси абсцисс и подсчитать их количество. Элементарный анализ показывает, что это уравнение имеет тривиальный корень в точке x=0 и еще один корень на интервале от 0 до . Отрицательных корней у этого уравнения нет. Таким образом, задача сводится к нахождению единственного корня. Левая граница интервала представляет собой число близкое к нулю, например 0.001. В качестве правой границы достаточно ограничится значением 1.0, поскольку при больших значениях функция x2 выходит из области допустимых значений функции sin(x).

Этап 2. На этом этапе, прежде всего, программируется заданная функция y(x), а затем в основной программе реализуется алгоритм нахождения корня. Ниже представлен листинг программы, в котором итерационный цикл по точности построен с помощью оператора цикла с постусловием. Начальные значения границ интервала, требуемая точность и максимальное число итераций заданы константами.

Листинг 6.1. Алгоритм нахождения корня нелинейного уравнения методом половинного деления (заголовок программы не приводится).

Function y(x : real):real;

Begin result:=x*x-sin(x); End;