ВУЗ: Национальный исследовательский ядерный университет МИФИ
Категория: Методичка
Дисциплина: Программирование
Добавлен: 06.02.2019
Просмотров: 305
Скачиваний: 3
6. Лабораторная работа №5
РЕШЕНИЕ УРАВНЕНИЙ
Целью лабораторной работы является разработка процедур с нестандартной внешней функцией.
Используются приемы и методы программирования: разработка процедур, не зависящих от используемых внешних функций, разработка модульных программ.
Условие задачи. Найти корень заданного уравнения с точностью
методом деления пополам и методом простых итераций
и сравнить скорость сходимости методов.
Метод деления пополам
Применяется для нахождения корня уравнения f(x)=0 на отрезке [a, b] для непрерывной функции. Он работает при условии, что на концах отрезка, содержащего корень, функция должна иметь разные знаки (см. рис. 5.1).
y=f(x)
a
c x b
f(x)=0
Рис. 5.1. Метод деления пополам
Суть метода состоит в последовательном «стягивании» отрезка к корню:
Пусть l – левая граница изменяющегося отрезка (вначале l=a), r – его правая граница (вначале r=b);
отрезок [l, r] делится пополам точкой с и выбирается та половина, на концах которого функция имеет разные знаки; если это левая половина, то r=c, если правая, то l=c:
процесс деления отрезка повторяется до тех пор, пока не выполнится условие
r - l и f(x) .
Метод простых итераций
Используется в том случае, если уравнение можно выразить в виде x = f(x). Тогда корень уравнения является пересечением прямой y = x и кривой у = f(x) (см. рис. 5.2).
Метод простых итераций записывается в виде рекуррентной формулы
x0 = xначальное
xi = f(xi-1) для i = 1, 2, 3, …
которая образует последовательность
x0, x1, x2, …, xi, …
сходящуюся к корню уравнения при определенных условиях.
Повторяем процесс до выполнения условия xi - xi-1 .
Рис. 5.2. Метод простых итераций
Этапы выполнения
-
Составить спецификацию задачи (без раздела Метод), предусмотрев надежный
ввод данных.
-
Выполнить проектирование и разработку интерфейса задачи и отделения ввода-
вывода-обработки. Решение уравнений записать в виде абстрактных действий. Реализовать надежный ввод данных и создать оболочку программы для тестирования.
Отладить программу с простыми заглушками.
-
Рассмотреть подзадачу “Решение уравнения x=φ(x) методом простых итераций”.
Учесть, что варианты задач в Приложении 8.2 приведены для уравнения f(x) = 0, корень которого лежит на отрезке [0, 2].
Описать итерационный метод простых итераций в разделе Метод.
Разработать интерфейс процедуры (или функции) метода простых итераций (учесть анализ скорости сходимости!), записав его в раздел описаний главной программы, а простую заглушку заменить обращением к этой процедуре (функции).
Отладить интерфейс процедуры, заменив алгоритм заглушкой.
-
Заменить заглушку программой вычисления корня методом простых итераций,
взяв за основу общий алгоритм, описанный в 7.1.
-
Вынести алгоритм вычисления φ (x) в отдельный процедурный модуль (function).
В списке входных параметров процедуры метода простых итераций описать функцию φ (x) как внешнюю функцию, использовав процедурный тип языка Паскаль (см. 7.10). Отладить программу.
6. Повторить п.3 5 для метода деления пополам.
7. Сравнить скорость сходимости методов. Какие параметры влияют на скорость сходимости?
8. Сдать работу преподавателю, имея полную документацию, включающую структурную схему программы.